ASP.NET Core身份認證服務框架IdentityServer4 介紹

  • 2020 年 3 月 12 日
  • 筆記

IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架。它可以在您的應用程式中提供以下功能:

它使你的應用程式具有如下特點:

認證即服務

適用於所有應用程式(web, native, mobile, services)的集中登錄邏輯和工作流程。IdentityServer是OpenID Connect的官方認證實現。

單點登錄/註銷

多個類型的應用程式在一個點進行登錄和註銷操作。

API 訪問控制

為各種類型的客戶端頒發API的訪問令牌,例如 伺服器到伺服器、Web應用程式,SPA、本地應用和移動應用程式。

聯合網關

支援Azure Active Directory,Google,Facebook等外部身份提供商。這可以保護您的應用程式免受如何連接到這些外部提供商的詳細資訊的影響。

專註於訂製

最重要的部分 – IdentityServer的許多方面都可以根據您的需求進行訂製。由於IdentityServer是一個框架而不是現成的產品或SaaS,因此您可以編寫程式碼以使系統適應您的方案。

成熟的開源

IdentityServer使用的Apache 2開源協議,允許在其上構建商業產品。它也是.NET Foundation的一部分,它提供治理和法律支援。

免費和商業支援

如果您需要幫助構建或運行您的身份平台,請告知IdentityServer官方。 他們可以通過多種方式為您提供幫助。

一.整體介紹

現代應用程式看起來更像這個:

最常見的相互作用:

  • 瀏覽器與Web應用程式的通訊 Browser -> Web App
  • Web應用程式與Web API通訊
  • 基於瀏覽器的應用程式與Web API
  • 本機應用程式與Web API進行溝通
  • 基於伺服器的應用程式與Web API
  • Web API與Web API通訊

通常,每個層(前端、中間層和後端)必須保護資源並實現身份驗證或授權——通常針對同一個用戶存儲區。

 

將這些基本安全功能外包給安全令牌服務可以防止在這些應用程式和端點上複製該功能。

 

應用支援安全令牌服務將引起下面的體系結構和協議:

這樣的設計將安全問題分為兩部分:

二.認證(Authentication)

認證可以讓一個應用程式知道當前用戶的身份。 通常,這些應用程式代表該用戶管理數據,並且需要確保該用戶只能訪問允許他訪問的數據。最常見的示例是Web應用程式,但基於本地和基於js的應用程式也需要進行身份驗證。

 

最常用的認證協議saml2p、WS-Federation和OpenID,saml2p協議是最流行和實際應用最多的。

OpenID Connect對於現在應用來說是被認為是未來最有潛力的,這是專為移動應用場景設計的,一開始就被設計成對移動應用場景友好。

 

三.API訪問

應用程式有兩種基本方式與API進行通訊,一種是使用應用程式標識,另一種是委託用戶的身份。有時這兩種方法都需要結合。

OAuth2協議,它允許應用程式從一個安全令牌服務要求訪問令牌,使用這個訪問令牌來訪問API。這個機制降低了客戶機應用程式和API的複雜性,因為身份驗證和授權可以是集中式的。

 

四.OpenID Connect 和 OAuth 2.0 結合

 OpenID Connect 和 OAuth 2.0非常相似,事實上OpenID Connect 是在OAuth 2.0之上的一個擴展。兩個基本的安全問題,認證和API訪問,被組合成單個協議,通常只需一次往返安全令牌服務。

 我們認為OpenID Connect和OAuth 2.0的組合是可預見在未來是保護現代應用程式的最佳方法。IdentityServer4是這兩種協議的實現,並且被高度優化以解決當今移動應用、本地應用和web應用的典型安全問題

 

五.IdentityServer4可以幫助你做什麼

IdentityServer是將規範兼容的OpenID Connect和OAuth 2.0端點添加到任意ASP.NET Core應用程式的中間件。通常,您構建(或重新使用)包含登錄和註銷頁面的應用程式,IdentityServer中間件會向其添加必要的協議頭,以便客戶端應用程式可以與其對話 使用這些標準協議。

我們通常建議通過僅包含認證相關的UI來使攻擊面儘可能小。