问候,
我想问以下是否是 Oauth 2.0 的有效用例:
- 授权服务器(单独)
- 单个(或多个)资源服务器
- 多个客户端应用程序访问同一资源服务器。
如果这是一个有效的用例,我们如何使用授权服务器配置多个客户端。无法使用 application.properties (application.yml) 进行配置。
security.oauth2.client.client-id=dummy
security.oauth2.client.client-secret=password
或
security:
oauth2:
resource:
token-info-uri: http://localhost:8080/oauth/check_token
client:
client-id: dummy
client-secret: password
在这种情况下,多客户端应用程序的正确配置是什么?
最佳答案
因此,如果您有多个客户端,您可以通过扩展 AuthorizationServerConfigurerAdapter
在 AuthorizationServer 中注册客户端详细信息
以下是如何在内存中注册客户详细信息的示例:
@EnableAuthorizationServer
@Configuration
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
private final AuthenticationManager authenticationManager;
@Autowired
public AuthServerConfig(AuthenticationManager authenticationManager) {
this.authenticationManager = authenticationManager;
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("egen")
.secret("{noop}egensecret")
.authorizedGrantTypes("authorization_code","refresh_token","password")
.scopes("food_read","food_write")
.and()
.withClient("oauthclient")
.secret("{noop}oauthclient-secret")
.authorizedGrantTypes("client_credentials", "refresh_token")
.authorities("ROLE_USER", "ROLE_OPERATOR")
.scopes("food_read");
}
///more code
}
有关更多详细信息,您可以查看我的 github 存储库:
关于java - Oauth 2.0 - 单个资源服务器但多个客户端应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716247/