Spring Security OAuth2 - 将参数添加到授权 URL
Posted
技术标签:
【中文标题】Spring Security OAuth2 - 将参数添加到授权 URL【英文标题】:Spring Security OAuth2 - Add parameter to Authorization URL 【发布时间】:2015-09-05 13:37:09 【问题描述】:我正在使用 Spring Security 和 OAuth2 使用以下项目进行身份验证/授权。 http://projects.spring.io/spring-security-oauth/
我需要向 OAuth2 授权 url 添加参数。我不确定如何将其添加到 AuthorizationCodeResourceDetails bean?
问题是我想通过从客户端站点登录或注册来开始用户旅程。客户端将发送一个 OAuth 请求,在授权服务器上,我将显示注册表单或登录表单以供用户继续其旅程。
默认流程只有以下参数 /oauth/authorize?client_id=[]&redirect_uri=[]&response_type=token&scope=openid+profile&state=HZSMKb
我想附加“&startPoint=register”
public OAuth2ProtectedResourceDetails googleOAuth2Details()
AuthorizationCodeResourceDetails googleOAuth2Details = new AuthorizationCodeResourceDetails();
googleOAuth2Details.setAuthenticationScheme(header);
googleOAuth2Details.setClientAuthenticationScheme(header);
googleOAuth2Details.setClientId(clientId);
googleOAuth2Details.setClientSecret(clientSecret);
googleOAuth2Details.setUserAuthorizationUri(authorizationUrl);
googleOAuth2Details.setAccessTokenUri(accessTokenUrl);
googleOAuth2Details.setScope(asList("openid","profile"));
return googleOAuth2Details;
@SuppressWarnings("SpringJavaAutowiringInspection") // Provided by Spring Boot
@Resource
private OAuth2ClientContext oAuth2ClientContext;
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public OAuth2RestOperations authCodeRestTemplate()
return new OAuth2RestTemplate(googleOAuth2Details(), oAuth2ClientContext);
【问题讨论】:
您尝试向哪个 OAuth 提供者进行身份验证?请发布一些相关代码,否则人们会简单地投票。 我也在使用 spring-security-oauth2 作为提供者。 不,你错过了我的意思,你想让你的用户登录谷歌,对吧??? 对不起命名约定,基本上我使用谷歌客户端进行测试,但我希望用户通过我自己的 IDP 登录,它基于我上面提到的“spring-security-oauth”项目。 【参考方案1】:作为基于 auth2 "authorization_code" 流程的 "AuthorizationCodeResourceDetails" 不接受额外参数。因此,为了解决这个问题,我通过在授权 url 本身中提供参数来解决这个问题。
例如。如果授权 url 是 http://localhost:8080/idp/oauth/authorize
我已经将我的额外参数附加到该 url,如下所示 http://localhost:8080/idp/oauth/authorize?startPoint=register
由于此请求将由 Spring 在 SavedRequest 变量下保存到会话中,我稍后可以查看发起的请求是用于注册还是登录。
【讨论】:
以上是关于Spring Security OAuth2 - 将参数添加到授权 URL的主要内容,如果未能解决你的问题,请参考以下文章
Spring-Security OAuth2 设置 - 无法找到 oauth2 命名空间处理程序
Spring Security OAuth2 v5:NoSuchBeanDefinitionException:'org.springframework.security.oauth2.jwt.Jwt
针对授权标头的Spring Security OAuth2 CORS问题