在Spring Cloud OAuth中更改承载令牌类型

时间:2015-03-17 09:54:06

标签: spring-security spring-boot gitlab spring-security-oauth2 spring-cloud

我使用的是Spring Cloud OAuth,我使用https://github.com/spring-cloud-samples/sso/的官方示例和GitLab(https://about.gitlab.com/)作为OAuth提供商。

问题是GitLab发送了一个类型的令牌" bearer"和Spring Cloud SSO检索令牌并以
的形式发送一个Header Authorization bearer xxxxxxx
被GitLab服务器拒绝的原因是根据文档,它只接受
形式的令牌 Authorization Bearer xxxxxxx

这可能是GitLab服务器中的一个错误,但有没有办法解决Spring Cloud SSO的这个问题。

更新19.03。:

这是我在SpringCloud示例的SsoApplication.java中尝试过的。

    @Autowired
    private OAuth2RestTemplate oAuth2RestTemplate;

    @PostConstruct
    private void modifyOAuthRestTemplate() {
        this.oAuth2RestTemplate.setAuthenticator(new OAuth2RequestAuthenticator() { // this line gets called
            @Override
            public void authenticate(OAuth2ProtectedResourceDetails resource, OAuth2ClientContext clientContext, ClientHttpRequest request) {
                // this line is never called
            }
        });
    }

而不是新注入的OAuth2ProtectedResourceDetails" original"一个人被召唤。每次我尝试在示例应用程序中进行身份验证

1 个答案:

答案 0 :(得分:1)

更新:如果您定义类型为UserInfoRestTemplateCustomizer的bean,则在Spring Cloud中存在回调,您将在启动期间获得OAuth2RestTemplate的实例,您可以在其中应用自定义项(例如OAuth2RequestAuthenticator将“持票人”改为“持票人”)。

我见过其他人使用的解决方法是@Autowired OAuth2RestTemplate并在OAuth2RequestAuthenticator中修改其@PostConstruct(无论如何使用之前)。