IdentityServer4官方文件(一)【概覽】
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的應用程式也同樣需要身份認證。
最常見的身份認證協議是 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官方文件(二)【相關術語】IDEServer
- IdentityServer4官方文件(三)【已支援的規範】IDEServer
- OKHttp 官方文件【一】HTTP
- SpringMVC 解析(一)概覽SpringMVC
- 概覽
- Retrofit原始碼分析一 概覽原始碼
- salesforce Integration 概覽(一) 雜篇Salesforce
- Linux裝置模型(一) 概覽Linux模型
- DOM概覽
- 公司概覽
- A-O-P 一篇概覽
- 學習Tomcat(一)之容器概覽Tomcat
- Django官方文件Django
- nmap官方文件
- Hooks概覽(譯)Hook
- Java NIO 概覽Java
- Flutter框架概覽Flutter框架
- Babel 社群概覽Babel
- 推理框架概覽框架
- BurpSuite 功能概覽UI
- OKHttp 官方文件【二】HTTP
- 一起來讀官方文件-----SpringIOC(04)Spring
- 一起來讀官方文件-----SpringIOC(02)Spring
- Python 基礎概覽Python
- Vuex - 原始碼概覽Vue原始碼
- Flutter技術概覽Flutter
- React Hooks-概覽ReactHook
- python - pipenv 使用概覽Python
- BIO,NIO,AIO概覽AI
- 概覽【JavaScript那些事】JavaScript
- 設計模式概覽設計模式
- PyQt5 概覽QT
- Dart語言概覽Dart
- 流量控制--概覽
- HTTP報文 概覽HTTP
- Redis分散式概覽Redis分散式
- Android 儲存概覽Android
- 編譯原理概覽編譯原理