IdentityServer4 是一個提供 認證服務,單點登錄/登出(SSO),API訪問控制,聯合認證通道的可定製、免費商業支持的框架。 ...
IdentityServer4 中文文檔 -1- (簡介)背景
原文:http://docs.identityserver.io/en/release/intro/big_picture.html
下一篇:IdentityServer4 中文文檔 -2- (簡介)相關術語
現代應用程式看上去大都是這樣的:
常見的交互方式包括:
- 瀏覽器 與 Web應用程式 通信;
- Web應用程式 與 Web API 通信(Web應用程式自身 或 代表用戶 與 Web API 通信);
- 基於瀏覽器的應用程式 與 Web API 通信;
- 本地應用程式 與 Web API 通信;
- 基於伺服器的應用程式 與 Web API 通信;
- Web API 與 Web API 通信(WebAPI自身 或 代表用戶與另一個WebAPI 通信);
將基礎安全功能外包給一個安全令牌服務(STS,Security Token Service),能夠避免這些應用程式以及端點之間的功能性重覆。
重組應用程式以支持一個安全令牌服務,能夠導出以下架構和協議:
這樣的設計把安全問題分成了兩個部分:
身份認證
當一個應用程式需要知道當前用戶的身份(Identity)的時候就要用到身份認證(Authentication)。通常情況下這些應用程式托管著代表該用戶的數據,並且必須確保該用戶只能訪問被允許訪問的數據。最常見的例子就是傳統的web應用程式 —— 但是本地應用程式和基於JS的應用程式也同樣需要身份認證。
最常見的身份認證協議是 SAML2p、WS-Federation 和 OpenID Connect——SAML2p 是最受歡迎的,也是部署得最廣泛的。
OpenID Connect 是三種協議中最新的一種,但它卻被認為是未來的趨勢,因為它對於現代應用程式來說最具潛力。它從一開始就是為移動應用場景而構建的,並且被設計成了友好的API。
API訪問
應用程式有兩種基礎的方式與API通信 —— 使用應用程式身份,或者使用代表用戶的身份。有時候需要聯合使用這兩種方式。
OAuth2 是一個通信協議,它允許應用程式向安全令牌服務請求訪問令牌,然後通過訪問令牌與API通信。這同時減少了客戶應用程式和API的複雜性,因為認證和授權可以是集中式的。
OpenID Connect和OAuth2 —— 結合使用更好
OpenID Connect和OAuth2非常相似 —— 實際上前者是後者的頂級擴展。它們把兩個基礎安全問題(身份認證和 API 訪問)合併成了一個單一的協議 —— 通常這隻是與安全令牌服務的一個往返交互。
我們堅信,將 OpenID Connect 和 OAuth2 結合以保護現代應用程式,在可預見的未來,肯定會是最佳實踐。IdentityServer4 是這兩種協議的實現,並且它已經被高度優化以解決當今 移動應用程式、本地應用程式 和 Web應用程式 的典型安全問題。
IdentityServer4 能做什麼?
IdentityServer4 是一個中間件 ,它能夠將符合規範的 OpenID Connect 和 OAuth2.0 端點添加到任意一個 ASP.NET Core 應用程式中。
通常,在你構建(或者復用)一個包含登錄和註銷頁(或者 授權確認頁)的應用程式的時候,IdentityServer 中間件會將需要的協議添加到頁面頭部,這樣一來客戶端應用程式就能夠使用這些標準協議跟它協商了。
你可以根據你的需要使用儘可能複雜的宿主應用程式。但是,為了保持受攻擊面儘可能小, 我們一般建議你只將認證相關的UI包含進來。
下一篇:IdentityServer4 中文文檔 -2- (簡介)相關術語