【问题标题】:dynamically add param to userAuthorizationUri in oauth2在 oauth2 中将参数动态添加到 userAuthorizationUri
【发布时间】:2017-12-29 11:29:01
【问题描述】:

有时用户在本地数据库中的刷新令牌会变得陈旧。为了补充,我在拨打 oauth2 电话时尝试添加 prompt=consent 参数。我试图在我的配置类和afterPropertiesSet 中尝试@Autowire AuthorizationCodeAccessTokenProvider 我正在做一个setTokenRequestEnhancer,然后当我在OAuth2RestTemplate 中查看以下代码时意识到这个bean 甚至没有通过spring 容器初始化

private AccessTokenProvider accessTokenProvider = new AccessTokenProviderChain(Arrays.<AccessTokenProvider> asList( new AuthorizationCodeAccessTokenProvider(), new ImplicitAccessTokenProvider(), new ResourceOwnerPasswordAccessTokenProvider(), new ClientCredentialsAccessTokenProvider()));

搜索是否有任何spring代码正在调用org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider.setAuthorizationRequestEnhancer(RequestEnhancer)以了解如何访问它,但没有人调用它。

问题:如何在调用 oauth2 时动态添加参数到userAuthorizationUri

【问题讨论】:

    标签: spring spring-boot spring-security google-api spring-security-oauth2


    【解决方案1】:

    不幸的是,我也没有找到一个优雅的解决方案。但是,我注意到重定向是由UserRedirectRequiredException 触发的。

    我能够通过注册修改此异常的自定义过滤器动态添加请求参数动态

    @Component
    @Order(-102)
    public class EnhanceUserRedirectFilter implements Filter {
    
        @Override
        public void init(final FilterConfig filterConfig) throws ServletException {
        }
    
        @Override
        public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
            try {
                chain.doFilter(request, response);
            } catch (final UserRedirectRequiredException ex) {
                ex.getRequestParams().put("prompt", "consent");
                throw ex;
            }
        }
    
        @Override
        public void destroy() {
        }
    }
    

    请注意,此类 servlet 过滤器的优先级必须高于 Spring Security。就我而言,-102 的优先级高于 Spring Security 默认的 -100

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 2019-05-19
      相关资源
      最近更新 更多