成功身份验证后,如何从spring oauth2 oauth2accesstokenresponse检索其他参数?

nle07wnf  于 2021-09-30  发布在  Java
关注(0)|答案(0)|浏览(288)

我已经实现了一个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)在上述转换方法中接收到响应后,是否有方法拦截流?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题