Обмен AuthCode для токенов нескольких клиентов - PullRequest
0 голосов
/ 09 июля 2019

Хорошо, поэтому с одним клиентом я могу получить код авторизации, обменять его на токен.Затем запросите ресурсы с помощью токена и успешно получите их.Поэтому я подумал, что попробую второй клиент, и он всегда хочет аутентифицироваться только на первом клиенте ... если вы поможете мне увидеть, что я неправильно настроил, это будет полезно.

Вотсоответствующая конфигурация: из 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 голосов
/ 12 июля 2019

Согласно стандартам OAuth 2.0, код авторизации выдается конкретному клиенту, фактически конкретному пользователю. Даже нельзя поделиться с другим пользователем, используя тот же клиент. Так что ошибка законна.

...