为多个客户端交换令牌的AuthCode

时间:2019-07-09 17:31:36

标签: oauth-2.0 spring-security-oauth2

好吧,因此我可以通过一个客户端获得一个验证码,并将其交换为令牌。然后使用令牌请求资源并成功获取它们。所以我想我要尝试第二个客户端,它似乎总是只想对第一个客户端进行身份验证...如果您可以帮助我看看我配置错误的内容,将很有帮助。

以下是相关配置: 从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应用程序将其交换为令牌,然后得到以下响应。 enter image description here

这就是我使用clientapp而不是client2时得到的结果

enter image description here

1 个答案:

答案 0 :(得分:0)

根据OAuth 2.0标准,授权代码会发布给特定的客户端,实际上是特定的用户。甚至无法与使用同一客户端的其他用户共享。因此错误是合法的。