IdentityServer4官方文件(一)【概覽】

風靈使發表於2019-04-17

IdentityServer4 中文文件 -1- (簡介)背景


現代應用程式看上去大都是這樣的:
在這裡插入圖片描述
常見的互動方式包括:

  • 瀏覽器 與 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的應用程式也同樣需要身份認證。

最常見的身份認證協議是 SAML2pWS-FederationOpenID Connect——SAML2p 是最受歡迎的,也是部署得最廣泛的。

OpenID Connect 是三種協議中最新的一種,但它卻被認為是未來的趨勢,因為它對於現代應用程式來說最具潛力。它從一開始就是為移動應用場景而構建的,並且被設計成了友好的API。

API訪問

應用程式有兩種基礎的方式與API通訊 —— 使用應用程式身份,或者使用代表使用者的身份。有時候需要聯合使用這兩種方式。

OAuth2 是一個通訊協議,它允許應用程式向安全令牌服務請求訪問令牌,然後通過訪問令牌與API通訊。這同時減少了客戶應用程式和API的複雜性,因為認證和授權可以是集中式的。

OpenID ConnectOAuth2 —— 結合使用更好

OpenID ConnectOAuth2非常相似 —— 實際上前者是後者的頂級擴充套件。它們把兩個基礎安全問題(身份認證和 API 訪問)合併成了一個單一的協議 —— 通常這只是與安全令牌服務的一個往返互動。

我們堅信,將 OpenID ConnectOAuth2 結合以保護現代應用程式,在可預見的未來,肯定會是最佳實踐。IdentityServer4 是這兩種協議的實現,並且它已經被高度優化以解決當今 移動應用程式、本地應用程式 和 Web應用程式 的典型安全問題。

IdentityServer4 能做什麼?

IdentityServer4 是一箇中介軟體 ,它能夠將符合規範的 OpenID ConnectOAuth2.0 端點新增到任意一個 ASP.NET Core 應用程式中。

通常,在你構建(或者複用)一個包含登入和登出頁(或者 授權確認頁)的應用程式的時候,IdentityServer 中介軟體會將需要的協議新增到頁面頭部,這樣一來客戶端應用程式就能夠使用這些標準協議跟它協商了。

在這裡插入圖片描述
你可以根據你的需要使用盡可能複雜的宿主應用程式。但是,為了保持受攻擊面儘可能小, 我們一般建議你只將認證相關的UI包含進來。

相關文章