[英]Spring Security 5 OAuth2 client password grant type
我有 2 個應用程序:
用戶將能夠登錄應用程序 1 並訪問其資源。 我想實現以下流程:
用戶在登錄表單中輸入他的憑據 -> 應用程序 1 將使用用戶憑據及其具有密碼授予類型的clientId
從應用程序 2 獲取令牌 -> 使用令牌訪問應用程序 1 的資源。
問題是 Spring Security 5 是否支持客戶端的密碼授予類型? 我在 Spring Security 5 實現中找到了所有剩余授權類型,但沒有找到密碼。
Spring Security 5.1.x 不支持,參見Spring Security Reference :
6.6 OAuth 2.0 客戶端
OAuth 2.0 客戶端功能支持 OAuth 2.0 授權框架中定義的客戶端角色。
提供以下主要功能:
- 授權碼授予
- 客戶憑據授予
- Servlet 環境的
WebClient
擴展(用於發出受保護的資源請求)
HttpSecurity.oauth2Client()
提供了許多用於自定義 OAuth 2.0 客戶端的配置選項。
但是,您可以使用 Spring Security OAuth2,請參閱OAuth 2 開發人員指南:
訪問受保護的資源
作為一般規則,Web 應用程序不應使用密碼授權,因此如果可以支持
AuthorizationCodeResourceDetails
,請避免使用ResourceOwnerPasswordResourceDetails
。 如果您非常需要密碼授權才能從 Java 客戶端工作,那么使用相同的機制來配置您的OAuth2RestTemplate
並將憑據添加到 AccessTokenRequest(它是一個 Map 並且是臨時的)而不是ResourceOwnerPasswordResourceDetails
(在所有訪問令牌之間共享) .
或者您可以更新到 Spring Security 5.2.x,請參閱Spring Security 參考:
11.2 OAuth 2.0 客戶端
OAuth 2.0 客戶端功能支持 OAuth 2.0 授權框架中定義的客戶端角色。
在高層次上,可用的核心功能是:
授權資助支持
- 授權碼
- 刷新令牌
- 客戶憑證
- 資源所有者密碼憑證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.