2015-06-17 31 views
0

我想知道是否真的需要OpenID Connect以在OAuth2之上提供身份驗證。在我看來,如果我生成JWT(JWE)作爲訪問令牌,並且在訪問令牌中存儲用戶聲明,角色/權限等,則不需要OpenID Connect的ID令牌。資源服務器可以驗證每個請求上的訪問令牌。另外,我可以保持訪問令牌很小,只需要存儲一個會話ID並使用聲明/角色/權限填充該會話。此外,我可以在會話中設置到期值,並支持滑動到期等,甚至不處理刷新令牌。我是否缺少OpenID Connect的真正內容?使用OAuth和JWT進行身份驗證但不使用OpenID Connect

我才意識到更新我要澄清我的問題有點。如果我建立了一個允許用戶通過Google登錄的網站,我可以看到OpenID Connect的必要性。我允許某人根據某些OAuth授權流程訪問我的網站,該授權流程未證明身份驗證發生。但是,如果我構建了一堆服務,並且只想發佈令牌來訪問這些服務資源,那麼是不是足夠了?如果我想讓這些標記包含角色/聲明,以便我可以在我的服務中進行授權決策,是不是JWT包含足夠的角色/聲明?如果覺得在這種情況下OpenID Connect不是必需的。

回答

0

通過要求訪問令牌是JWT,同意接受JWT的用戶聲明,將過期/簽發時間戳放入此處,並確保您以加密方式驗證您實際正在執行的令牌的頒發者與OpenID Connect一樣:「分析」OAuth 2.0的方式可以提供用戶身份驗證/身份信息。

更新:

但是,如果你並不需要用戶認證的語義,你可以使用OAuth 2.0堅持。您可以使用JWT作爲訪問令牌,以便資源服務器(API)可以驗證和檢查訪問令牌,並找出客戶端代表誰的行爲。但是請注意,該標記的擁有並不意味着用戶當時在場(並經過身份驗證)。

+0

感謝您的回答!我只是意識到我需要澄清我的問題。如果我建立了一個允許用戶通過Google登錄的網站,我可以看到OpenID Connect的必要性。我允許某人根據某些OAuth授權流程訪問我的網站,該授權流程未證明身份驗證發生。但是,如果我構建了一堆服務,並且只想發佈令牌來訪問這些服務資源,那麼是不是足夠了?如果我想讓這些標記包含角色/聲明,以便我可以在我的服務中做出授權決定,那麼JWT是不是足夠了? – enamrik

+0

這確實聽起來像標準OAuth 2.0,客戶端向資源服務器(API)呈現結構化的JWT,API知道如何驗證令牌並在其中使用聲明。它不提供身份驗證,但允許委派訪問客戶端。 –

+0

謝謝,那是我等待的確認。我的同事想要引入OpenID Connect並讓這些API使用id_token。我認爲這是因爲他們認爲聲明屬於id_token(由規範支持),而不屬於訪問令牌(未由OAuth定義)。但是,由於OpenID Connect,依賴方(OAuth Client)是唯一使用id_token的應用程序,我們必須考慮我們的API RP?!這似乎是對OpenID Connect解決問題的誤解。 – enamrik

相關問題