一.整體情況
現代應用程序看起來更像這個:
最常見的相互作用:
- 瀏覽器與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來使攻擊面盡可能小。