Spring 安全 OAuth2 - 向授权添加参数 URL
Spring Security OAuth2 - Add parameter to Authorization URL
我正在使用 Spring OAuth2 安全性 authentication/authorization 使用以下项目。
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);
}
As "AuthorizationCodeResourceDetails" 基于auth2 "authorization_code" 流程不接受额外参数。因此,为了解决这个问题,我通过在授权 url 本身中提供参数来解决这个问题。
例如。如果授权 url 是
http://localhost:8080/idp/oauth/authorize
我已经将我的额外参数附加到 url,如下所示
http://localhost:8080/idp/oauth/authorize?startPoint=register
由于此请求将通过 Spring 在 SavedRequest 变量下保存到会话中,我稍后可以获取该变量以查明发起的请求是注册还是登录。
我正在使用 Spring OAuth2 安全性 authentication/authorization 使用以下项目。 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);
}
As "AuthorizationCodeResourceDetails" 基于auth2 "authorization_code" 流程不接受额外参数。因此,为了解决这个问题,我通过在授权 url 本身中提供参数来解决这个问题。
例如。如果授权 url 是 http://localhost:8080/idp/oauth/authorize
我已经将我的额外参数附加到 url,如下所示 http://localhost:8080/idp/oauth/authorize?startPoint=register
由于此请求将通过 Spring 在 SavedRequest 变量下保存到会话中,我稍后可以获取该变量以查明发起的请求是注册还是登录。