1.什麼是IdentityServer4?
它是一箇中介軟體服務框架,整合OIDC與OAuth2.0,
方便搭建任意多個專案。
IdentityServer4的組成
- Identity身份
- Server伺服器
- 4版本
原始碼:https://github.com/IdentityServer 【1 ~ 4】
demo:https://demo.identityserver.io/
1.1 Ids4能做些什麼?
- 主要的單體應用,微服務使用不多,還不如使用jwt等狀態碼
- 保護你的資源
- 頒發令牌、驗證令牌、重新整理令牌
- 使用本地帳戶或透過外部身份提供程式對使用者進行身份驗證
- 提供會話管理和單點登入
- 管理和驗證客戶機
- 支援非常多的協議實現和可擴充套件點
2.常見術語解析
3.學習過程中的知識點
3.1 JWT與OAuth2.0 👉
-
JWT是一種具體的,自身包含特定宣告邏輯的,Token實現框架。(賬號密碼登入)
JWT提供了一種用於釋出接入令牌(Access Token),並對釋出的簽名接入令牌進行驗證的方法。 令牌(Token)本身包含了一系列宣告,應用程式可以根據這些宣告限制使用者對資源的訪問。 -
OAuth一種授權協議,是規範,不是實現。(QQ授權機制)
OAuth2是一種授權框架,提供了一套詳細的授權機制。使用者或應用可以透過公開的或私有的設定,授權第三方應用訪問特定資源。
【比如快遞員進小區,給我送快遞】
3.2 OAuth2.0簡介 👉
OAuth(開放授權)是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,影片,聯絡人列表),而無需將使用者名稱和密碼提供給第三方應用。就比如我用QQ登入部落格園,那部落格園(第三方應用)的暱稱就可以是我的QQ(某網站)暱稱,它獲取到了我的QQ暱稱,並存到了部落格園的資料庫,我以後就一直可以使用QQ來登入部落格園,但是部落格園卻不知道我QQ的使用者名稱和密碼
3.2.1 四種方式
3.3 OpenID、OIDC 和 OAuth 的區別 👉
- OpenID 是認證,OAuth2.0是授權
- Authentication、Authorization
- 一個是登入,一個是授權
- 認證 = 【是不是】,授權 =【給不給】
-
OpenID更簡單,只提供一個認證,和字串去中心化的登入認證,只需要識別URL和OpenID即可,方便——【數字身份識別框架】。
-
OAuth是OpenID的一個補充,但是完全不同的服務,完全不需要提供任何資訊給第三方,包括使用者名稱
-
OpenID Connect 相容 OAuth2.0 + OpenID
- OpenID Connect和OAuth2非常相似 —— 實際上前者是後者的頂級擴充套件。它們把兩個基礎安全問題(身份認證和 API 訪問)合併成了一個單一的協議。
3.4 常用的幾種 Ids4 模式 👉
3.5 其他登入
4 框架包含的內容
-
核心的 IdentityServer 物件模型
-
服務和中介軟體
-
配置資料和運算元據
-
自定義擴充套件使用者資料
-
Quickstart UI
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/IdentityServer/IdentityServer4.Quickstart.UI/release/get.ps1'))
5. Ids4 優劣點
優點:
- 框架整合了 OCID 和 OAuth2.0 ,更全
- 可以做自定義擴充套件,更方便
- 搭配 ocelot 等,更系統
- 單獨登入,登出登入,外部登入等等
劣點:
- 個人覺得太複雜,不太好定製(微軟提供的 owin 中介軟體和 identity, 自己定製了一個 oauth2 認證伺服器)
- 適合大中型專案,小專案就別用了
- 適合單體,不適合微服務