使用“spring-security-oauth2”,可以在OAuth2的“授权阶段”中传递自定义参数吗?

时间:2016-10-18 17:48:06

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

我正在实施授权码流量+ JWT

我想知道是否以及如何在流程的授权阶段中添加其他自定义参数。

基本上,我希望做到以下几点:

  1. 当我将用户重定向到/oauth/authorize端点时,我想这样做 在
  2. 中传递一个附加参数(customPar 强调文本 ameter)
      

    获取网址       http://.../oauth/authorize?... customParameter = [VALUE]这样       VALUE是动态的

    1. 我需要在创建时检索VALUE JWT ,使用该值填充 JWT
    2. 这可能吗?我该如何实施?

2 个答案:

答案 0 :(得分:0)

我的想法是在 createAuthorizationRequest 方法的 AuthorizationRequestFactory 中的 AuthorizationRequest 期间添加您的参数,如here

@Override
public AuthorizationRequest createAuthorizationRequest(Map<String, String> authorizationParameters) {
    //here
    authorizationParameters.put("your", "parameter");
    //
    AuthorizationRequest request = super.createAuthorizationRequest(authorizationParameters);
    if (securityContextAccessor.isUser()) {
        request.setAuthorities(securityContextAccessor.getAuthorities());
    }
      return request;
}

您可以在自定义OAuth2RequestFactory中填充请求并注入请求或会话并检索它

答案 1 :(得分:0)

传递的自定义参数也将存储在 HttpSession 中。
下面是检索它们的示例代码。

celery worker -A app.celery -l info