首先,說一下大概的流程。算法
用戶登陸時,會將頁面輸入的帳戶密碼傳入對應的微服務中,而如今微服務中尚未當前用戶的認證,由此微服務再轉發給註冊中心,註冊中心再訪問用戶中心,用戶中心經過調取數據庫中的信息,數據庫
對傳過來的信息進行覈對,覈實正確後使用非對稱加密造成一個公鑰與私鑰,私鑰本身保存,公鑰分發給各個微服務,而後用戶再次登陸時,當前的微服務就擁有公鑰,經過公鑰解密就能夠驗證用戶微服務
是否正確。正確就放行經過。加密
jwt含有三個部分,分別是Header,載荷,簽名。spa
header:包含有jwt 當前的聲明的定義,還有base64算法。jwt
載荷:主要存放當前的有效信息。token
簽名:主要是對header與負載中的有效信息使用密鑰加密生成token。it
base64
一、用戶請求登陸,攜帶用戶名密碼到受權中心class
二、受權中心攜帶用戶名密碼,到用戶中心查詢用戶
三、查詢若是正確,生成JWT憑證
四、返回JWT給用戶
鑑權流程:
一、用戶請求某微服務功能,攜帶JWT
二、微服務將jwt交給受權中心校驗
三、受權中心返回校驗結果到微服務
四、微服務判斷校驗結果,成功或失敗
五、失敗則直接返回401
六、成功則處理業務並返回