我正在实现授权码流程+ JWT。
我想知道是否以及如何可能向流的授权阶段添加额外的自定义参数。
基本上,我希望做以下事情:
- 当将用户重定向到
/oauth/authorize
端点时,我希望在 中传递一个额外的参数(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();