【问题标题】:Spring Security OAuth2 - Add parameter to Authorization URLSpring Security OAuth2 - 将参数添加到授权 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”项目。

标签: spring spring-security oauth-2.0 spring-security-oauth2


【解决方案1】:

作为基于 auth2 "authorization_code" 流程的 "AuthorizationCodeResourceDetails" 不接受额外参数。因此,为了解决这个问题,我通过在授权 url 本身中提供参数来解决这个问题。

例如。如果授权 url 是 http://localhost:8080/idp/oauth/authorize

我已经将我的额外参数附加到该 url,如下所示 http://localhost:8080/idp/oauth/authorize?startPoint=register

由于此请求将由 Spring 在 SavedRequest 变量下保存到会话中,我稍后可以查看发起的请求是用于注册还是登录。

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 2013-12-01
    • 2018-03-21
    • 2015-10-11
    • 2020-05-11
    • 2015-05-22
    • 1970-01-01
    • 2021-03-21
    • 2018-09-20
    相关资源
    最近更新 更多