我正在评估Spring Security OAuth2实现。我对clientId
和clientSecret
感到困惑。
我按照https://spring.io/guides/tutorials/spring-security-and-angular-js/构建auth服务器。
我可以通过
生成代码http://localhost:9999/uaa/oauth/authorize?response_type=code&client_id=acme&redirect_uri=http://example.com
我也可以通过
获取accessstokencurl acme:acmesecret@localhost:9999/uaa/oauth/token \
-d grant_type=authorization_code -d client_id=acme \
-d redirect_uri=http://example.com -d code=jYWioI
{"access_token":"2219199c-966e-4466-8b7e-12bb9038c9bb","token_type":"bearer","refresh_token":"d193caf4-5643-4988-9a4a-1c03c9d657aa","expires_in":43199,"scope":"openid"}
获取访问令牌时,需要clientId
和clientSecret
。
但如果我有多个客户端,我应该启动多个auth服务器吗?它不能以这种方式工作。
如何在没有clientId
和clientSecret
的情况下构建OAuth2服务器?
答案 0 :(得分:1)
您可以设置可能的客户
Ex In Memory: -
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("acme")
.secret("acmesecret")
.authorizedGrantTypes("authorization_code", "refresh_token",
"password").scopes("openid")
.and()
.withClient("xx")
.secret("xx")
.authorizedGrantTypes("xxx");
}
或者您可以为客户端添加数据库记录
答案 1 :(得分:0)
为了实现动态客户端注册,您需要将凭据存储在数据库中,而不是硬编码配置中。
@Override
public void configure(final ClientDetailsServiceConfigurer clients) throws Exception {
clients.jdbc(dataSource())
// ...
}
有关更多信息,请参阅此tutorial。