古詩詞大全網 - 個性簽名 - 。NET Core5.0 JWT認證單點登錄

。NET Core5.0 JWT認證單點登錄

JWT,全稱是JSON Web Token,是壹種基於JSON的用戶認證的令牌。跨域認證是可能的,所以JWT非常適合分布式認證和單點登錄(SSO)。

Jwt由符號“.”分隔成三個部分。

HEADER:token header,它描述了令牌的類型和加密方法,並將json內容轉換為base64。

有效載荷:內容是暴露的信息,敏感信息不能存儲。將json內容更改為base64。

簽名:SIGNATURE,根據令牌頭的加密方法對頭和凈荷的信息進行加密,生成簽名。以下是官網介紹,地址:https://jwt.io/.

Jwt的token是不能篡改的。雖然base64解碼後可以明文讀取前兩部分的內容,但是由於簽名的第三部分是用密鑰對前兩部分的內容進行加密的,所以在驗證是否與原簽名壹致時,也需要對前兩部分的內容進行重新加密。如果內容被篡改,兩個簽名不壹致的驗證將失敗。

問題1:同壹個公司的系統,如果每個系統都有自己的用戶名和密碼,那麽用戶記得。

妳有壹個大腦袋。所以這個時候就產生了壹個認證中心,所有的系統都使用同壹套用戶信息在同壹個地方登錄。

問題二:使用同壹套用戶信息是可以的,但是如果要進入各個系統的話,還是要登錄壹次,很麻煩。所以這裏我們需要在壹個地方登錄,在任何地方登錄,登錄其中壹個系統,進入其他系統不需要登錄。

效果如下圖所示。

用戶登錄sso中心後的令牌在A、B兩個站點都可以使用,A、B站點和sso中心無需通信即可自行識別令牌是否有效。

如何串聯站點和sso?具體過程是用戶打開站點A,發現沒有登錄。然後站點A會跳轉到sso中心登錄,自帶網址。sso中心登錄成功後,他會跳回站點自帶的網址,並隨身攜帶令牌。

站點A登錄成功,那麽站點B * * *怎麽享受這個令牌呢?實踐是,當sso中心成功登錄時,它將壹個令牌保存到cookie(或localstorage,等等)。).當用戶進入B站點,發現沒有登錄,跳轉到sso中心自帶網址。sso中心發現cookie有令牌,就直接跳回B站點的url,帶上令牌,讓B站點實現* * *共享,自動登錄。

創建新的AuthenticationCenter項目。

創建新的AuthenticatinController控制器。

查看登錄視圖

其他相關類別

上面sso的登錄功能完成,打開登錄頁面就可以獲得令牌。

創建新網站a

修改startup.cs文件,並添加ConfigureServices方法。

添加Configure方法。

創建新的UserController。

其他相關類別

密鑰應該與sso中心的壹致。以上5000端口為sso端口,端口27271為站點端口。