8

ポストマンは、認証済みのコールを支援するAuthentication helpersを持っていると私はを使用してJHipsterによって作成されたRESTサーバーを呼び出すためにOAuth 2.0 helperを使用しようとしている郵便配達認証ヘルパーを使用してセキュリティをJHipster(春)のOAuth2レストサーバーを呼び出す方法、社会など)。

は、私は、これは画面で、設定の多くを試してみた(クライアントIDとシークレットは、マスクされた):

近い私が取得ポストマンに戻って、トークンを受信して​​からは次のようになります。それはこのよう誤るだなぜ私にはわからない

Response failed

。たぶん私はコールバックURLを間違って設定していますか?サーバーまたはクライアント(AngularJS)でこれを行う必要がありますか?

何が悪いと思いますか?私はあなたの助けに感謝します。

答えて

16

JHipsterは現在、「パスワード」oauth2許可タイプを使用するように設定されています。ヘルパーoauth2ヘルパーは、「認可コード」と「クライアント資格情報」認可タイプでのみ機能するようです。

角度アプリが のsrc /メイン/ webappの/スクリプト/コンポーネント/認証/プロバイダ/ auth.oauth2.service.js

でないよう何をしたいと思うことはまず直接、アプリのトークンエンドポイントを呼び出しています
POST http://localhost:8080/oauth/token?username=MY_USERNAME&password=MY_PASSWORD&grant_type=password&scope=read%20write 
ユーザ名とパスワードは、例えば、一つのヘッダセットで、それぞれ "ユーザ" と "ユーザ" とすることができる

:AAAAAAは​​あなた( ":" のclientId + + clientSecret)である

Authorization: Basic AAAAAA 

- すべてbase64でエンコードされています。 https://www.base64encode.org/を使用できます。たとえば、clientIdが "jhipsterapp"で、clientSecretが "mySecretOAuthSecret"の場合、AAIAAAを "amhpcHN0ZXJhcHA6bXlTZWNyZXRPQXV0aFNlY3JldA =="に置き換えます。これは "jhipsterapp:mySecretOAuthSecret" base64でエンコードされているためです。

あなたにはaccess_tokenが返されます。 APIのエンドポイントにアクセスするには、このようなヘッダーでパスワードリクエストのaccess_tokenを呼び出します。

Authorization: Bearer access_token_from_earlier_token_request 

更新:あなたはmicroservicesとUAAを使用している場合は、@のsdoxseeの答えに構築するにはニールの答えhttps://stackoverflow.com/a/45549789/1098564

3

参照してください。現在(2017年8月)

をJHipsterがでUaaConfigurationというクラスを生成し、 configure(ClientDetailsServiceConfigurer)メソッドは、クライアントID、クライアントシークレット、スコープおよび許可タイプを設定します。これらの設定(application*.ymlの参照JHipsterプロパティを含む)を参照して、/oauth/tokenAuth 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 

は、次のように認証ヘルパーが取り込まれるべきであることを意味する。

Postman Authentication Helper