Как вызвать сервер JHipster (Spring) OAuth2 Rest с помощью помощников аутентификации Postman

У почтальона есть помощники аутентификации, которые помогают с аутентифицированными вызовами, и я пытаюсь использовать помощник OAuth 2.0 для вызова REST-сервера, созданного JHipster с использованием Spring (Безопасность, Социальные сети и т. д.).

Я пробовал много конфигураций, это экран (идентификатор клиента и секрет были замаскированы):

Конфигурация помощника аутентификации

Для URL-адреса авторизации я пробовал:

Чем ближе я получаю токен обратно к Почтальону:

Не удалось ответить

Я не знаю, почему это так ошибочно. Может быть, я неправильно устанавливаю URL-адрес обратного вызова? Мне нужно сделать это на сервере или в клиенте (AngularJS)?

Кто-нибудь знает, что случилось? Я ценю вашу помощь.


person Denis C de Azevedo    schedule 06.01.2016    source источник


Ответы (2)


В настоящее время JHipster настроен на использование типа гранта oauth2 «пароль». Помощник oauth2, похоже, работает только с типами грантов «код авторизации» и «учетные данные клиента».

Что вам нужно сделать, так это сначала вызвать конечную точку токена вашего приложения напрямую, как это делает приложение angular в src/main/webapp/scripts/components/auth/provider/auth.oauth2.service.js.

POST http://localhost:8080/oauth/token?username=MY_USERNAME&password=MY_PASSWORD&grant_type=password&scope=read%20write

где ваше имя пользователя и пароль могут быть «user» и «user» соответственно, например, и с одним набором заголовков:

Authorization: Basic AAAAAA

где AAAAAA — ваш (clientId + ":" + clientSecret) — все в кодировке base64. Вы можете использовать https://www.base64encode.org/. Например, если ваш clientId — «jhipsterapp», а ваш clientSecret — «mySecretOAuthSecret», замените AAAAAA на «amhpcHN0ZXJhcHA6bXlTZWNyZXRPQXV0aFNlY3JldA==", поскольку это «jhipsterapp:mySecretOAuthSecret» в кодировке base64.

Это должно вернуть вам access_token. Теперь нажмите на свои конечные точки API, вызвав их с помощью access_token из вашего запроса пароля в вашем заголовке, как это.

Authorization: Bearer access_token_from_earlier_token_request

Обновление: если вы используете микросервисы и UAA, см. ответ Нила https://stackoverflow.com/a/45549789/1098564

person sdoxsee    schedule 17.01.2016

Чтобы опираться на ответ @sdoxsee:

В настоящее время (август 2017 г.) JHipster генерирует класс с именем UaaConfiguration с методом configure(ClientDetailsServiceConfigurer), устанавливающим идентификатор клиента, секрет клиента, область действия и тип гранта. Обратитесь к этим настройкам (включая упомянутые свойства JHipster в application*.yml), чтобы заполнить помощник аутентификации Postman, используя /oauth/token как в качестве URL-адреса аутентификации, так и в качестве URL-адреса токена доступа.


Пример:

@Override                                                                                                     
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {                              
    /*                                                                                                        
    For a better client design, this should be done by a ClientDetailsService (similar to UserDetailsService).
     */                                                                                                       
    clients.inMemory()                                                                                        
        .withClient("web_app")                                                                                
        .scopes("openid")                                                                                     
        .autoApprove(true)                                                                                    
        .authorizedGrantTypes("implicit", "refresh_token", "password", "authorization_code")                  
        .and()                                                                                                
        .withClient(jHipsterProperties.getSecurity().getClientAuthorization().getClientId())                  
        .secret(jHipsterProperties.getSecurity().getClientAuthorization().getClientSecret())                  
        .scopes("web-app")                                                                                    
        .autoApprove(true)                                                                                    
        .authorizedGrantTypes("client_credentials");                                                          
}  

И,

jhipster:
    security:
        client-authorization:
            client-id: internal
            client-secret: internal

Означает, что ваш помощник по аутентификации должен быть заполнен следующим образом:

Помощник по аутентификации почтальона

person Niel de Wet    schedule 07.08.2017