我使用的是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"一个人被召唤。每次我尝试在示例应用程序中进行身份验证
答案 0 :(得分:1)
更新:如果您定义类型为UserInfoRestTemplateCustomizer
的bean,则在Spring Cloud中存在回调,您将在启动期间获得OAuth2RestTemplate
的实例,您可以在其中应用自定义项(例如OAuth2RequestAuthenticator
将“持票人”改为“持票人”)。
我见过其他人使用的解决方法是@Autowired
OAuth2RestTemplate
并在OAuth2RequestAuthenticator
中修改其@PostConstruct
(无论如何使用之前)。