好吧,因此我可以通过一个客户端获得一个验证码,并将其交换为令牌。然后使用令牌请求资源并成功获取它们。所以我想我要尝试第二个客户端,它似乎总是只想对第一个客户端进行身份验证...如果您可以帮助我看看我配置错误的内容,将很有帮助。
以下是相关配置: 从OAuthServer:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients
.inMemory()
.withClient("clientapp").secret(passwordEncoder.encode("123456"))
.authorizedGrantTypes("password", "client_credentials", "authorization_code", "refresh_token")
.authorities("read")
.scopes("all")
.resourceIds("oauth2-resource")
.redirectUris("http://localhost:9081/login")
.accessTokenValiditySeconds(7200)
.refreshTokenValiditySeconds(240000)
.and()
.withClient("client2").secret(passwordEncoder.encode("789123"))
.authorizedGrantTypes("password", "client_credentials", "authorization_code", "refresh_token")
.authorities("read")
.scopes("all")
.resourceIds("oauth2-resource")
.redirectUris("http://localhost:9081/login")
.accessTokenValiditySeconds(7200)
.refreshTokenValiditySeconds(240000);
}
这是我获得auth_codes的方式(我可以使用任何一个用户):
http://localhost:9081/oauth/authorize?client_id=client2&response_type=code&scope=all
然后,一旦我有了一个auth_code,便使用Postman
应用程序将其交换为令牌,然后得到以下响应。
这就是我使用clientapp
而不是client2
时得到的结果
答案 0 :(得分:0)
根据OAuth 2.0标准,授权代码会发布给特定的客户端,实际上是特定的用户。甚至无法与使用同一客户端的其他用户共享。因此错误是合法的。