使用"spring-security-oauth2,"可以在 OAuth2 的"Authorization Phase"中传递自定义参数吗?



我正在实现授权码流程+ JWT

我想知道是否以及如何可能向流的授权阶段添加额外的自定义参数。

基本上,我希望做以下事情:

  1. 当将用户重定向到/oauth/authorize端点时,我希望在
  2. 中传递一个额外的参数(customPar强调的文本参数)

得到urlhttp://.../oauth/authorize?…customParameter=[VALUE]这样VALUE是动态的

  • 我将需要在创建时检索值JWT,用VALUE
  • 填充JWT

    这可能吗?我该如何实现?

    我的想法是在自定义OAuth2RequestFactory at createAuthorizationRequest方法中添加AuthorizationRequest参数,如下所示:

    @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中填充request并注入request或Session并检索它

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

    HttpSession httpSession = httpServletRequest.getSession(false);
    DefaultSavedRequest savedRequest = (DefaultSavedRequest) 
               httpSession.getAttribute("SPRING_SECURITY_SAVED_REQUEST");
    Map<String, String[]> parametersMap =  savedRequest.getParameterMap();
    

    最新更新