我想用几个支持多个身份提供者(例如google,facebook,github,....)的oauth2资源服务器以及一个自我实现的授权机制来构建一个春季云基础架构。
Oauth2资源服务器示例
安全配置
@Configuration
@EnableWebSecurity
@EnableResourceServer
public class Oauth2ResourceServerConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(final HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated();
}
}
application.yml
security:
oauth2:
resource:
user-info-uri: https://api.github.com/user
如您所见,该示例使用github作为身份提供者,并且可以正常工作。
Oauth2授权服务器示例:
Config
@Configuration
@EnableAuthorizationServer
public class Oauth2AuthorizationServerConfiguration extends GlobalAuthenticationConfigurerAdapter {
@Override
public void init(final AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}user").roles("USER")
.and()
.withUser("admin").password("{noop}admin").roles("USER", "ADMIN");
}
@Override
public void configure(final AuthenticationManagerBuilder auth) throws Exception {
super.configure(auth);
}
}
application.yml
security:
oauth2:
client:
client-id: user
client-secret: user
authorized-grant-types: password,client_credentials,authorization_code,refresh_token
scope: read,write
我可以将我的oauth2资源服务器更改为使用授权服务器:
security:
oauth2:
resource:
#user-info-uri: https://api.github.com/user
user-info-uri: http://${AUTH_HOST:localhost}:${AUTH_PORT:9000}/user
它工作得很好。
但是,如果我现在想同时使用它们和github和我自己的授权服务器,该怎么办?
我是否只是需要在Oauth2资源服务器中使用其他配置来提供多个user-info-uri
还是要做更多的事情?
我可以扩展自己的授权服务来支持github&co吗?
我不想使用Auth0和Co,因为我真的不愿意将应用程序中最重要的部分外包:安全性。即使我想尝试。但是到目前为止,我找不到任何适用于auth0 + spring cloud gateway +所有基础服务令牌认证的工作示例。