簡體   English   中英

如何實現 OAuth 資源服務器來驗證來自不同授權服務器的訪問令牌?

[英]How to implement an OAuth resource server to validate access tokens from different authorization servers?

如果我想實現一個可以使用多個通用授權服務器的資源服務器,我如何確保我的資源服務器可以驗證來自不同服務器的這些訪問令牌?

+------+              +----------+
| Auth |              | Resource |
+------+              +----------+
         \            /
           +--------+
           | Client |
           +--------+

盡管上面的繪圖有限,假設客戶端通過通常的authorization code flow最終從身份驗證服務器獲取訪問令牌,然后將其發送到資源服務器以獲取屬於授權客戶端獲取資源的特定用戶的資源代表用戶。

我打算支持的不僅僅是 OAuth 授權服務器。 我實際上假設它是一個通用的 OpenID 連接身份服務器 (IdP)。 所以 Auth 可能是 Google 的 openID,或 Microsoft 的身份提供者,或某些第三方通用 OpenID IdP,我可能無法控制其實施。

我也無法控制客戶端,它是一些第三方服務器應用程序,它想要從資源服務器使用 API。

我正在嘗試實現資源服務器。 問題是,我怎么知道哪個 OAuth 授權服務器(或 OpenID 連接 IdP)提供了我想驗證的訪問令牌? OAuth 協議是否對此有任何說明?

通常,資源服務器(您嘗試保護的 API)對一個 IdP 具有固定的依賴性,如果 API 接受來自多個提供商的令牌,那將非常混亂。 您的組織內通常有一個 IdP 來發布您的服務信任的令牌。

在 ASP.NET 內核中,API 從該服務下載公鑰並使用它來驗證傳入訪問令牌的簽名。

然后在令牌內部通常還有一個受眾聲明,指示訪問令牌的目標對象,API 也可以驗證這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM