我已经实现了一个custometokenresponseconverter来处理oauth2令牌响应,作为oauth2身份验证流的一部分。我能够检索其他参数并使用它们创建响应对象,如下面的convert()所示。
import org.springframework.core.convert.converter.Converter;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
public class CustomTokenResponseConverter implements Converter<Map<String, String>, OAuth2AccessTokenResponse> {
@Override
public OAuth2AccessTokenResponse convert(Map<String, String> tokenResponseParameters) {
// print all the params in response.
tokenResponseParameters.keySet().stream()
.forEach(key -> log.info("Key, Value = {}, {}", key, tokenResponseParameters.get(key)));
// add certain params in addition params map.
Map<String, Object> additionParams = new HashMap<String, Object>();
String userId = "";
if (tokenResponseParameters.containsKey("UserID")) {
userId = tokenResponseParameters.get("UserID");
}
additionParams.put("UserID", userId);
// create response object
OAuth2AccessTokenResponse response = OAuth2AccessTokenResponse.withToken(accessToken).tokenType(OAuth2AccessToken.TokenType.BEARER)
.expiresIn(expiresIn).scopes(scopes).refreshToken(refreshToken).additionalParameters(additionParams)
.build();
return response;
}
我想从控制器方法访问response对象中设置的这些附加参数,用户在成功身份验证后被重定向到该控制器方法。到目前为止,控制器中只能访问身份验证详细信息。
a) 是否有任何方法可以从控制器检索oauth2accesstokenresponse实体?或者b)在上述转换方法中接收到响应后,是否有方法拦截流?
暂无答案!
目前还没有任何答案,快来回答吧!