0

いくつかの保護されたエンドポイントにアクセスしようとすると、私のOauth2サーバー(春)にいくつか問題があります。client_idとclient_secretがurlのparamとvsで送信

私は(Zuulゲートウェイ経由)のトークンを取得したい場合は、私はこのような何かしたい:

http://localhost:4444/auth/oauth/token?client_id=gateway&client_secret=1234&grant_type=password&username=user&password=password 

(クライアントとユーザー上記Asumeが正しく存在し、Content-Typeのアプリケーションであること/ X-をwww-form-urlencoded)。

この呼び出しは動作しませんが、私はこのようにそれを行う場合:次に

gateway:[email protected]:4444/auth/oauth/token?grant_type=password&username=user&password=password 

、それが動作します。

これは正常な動作と考えられますか?私が読むことができる限り、これはうまくいくはずです。それはIDのようなもので、秘密は私がそれらをparamsとして送信したときに処理されていませんが、私がURLを変更すると、それが実行され、すべてが機能します。余分なものを実装する必要がありますか?

明確にするために、Oauth2サーバは、2番目のurlのようにclient_idとclient_secretを送信したときに動作しますが、それらをparams(最初のurl)として送信すると動作しません。

現在のコード(のOAuth2サービス)を確認することができます。https://github.com/otamega93/CloudBasedUserRegistration2/tree/master/OAuth2-service

構成はほとんどOAuth2Configuration、WebSecurityConfigとAuthServerApplicationです。私は郵便配達員とテストしています。これは、Oauth2サーバーに直接アクセスする場合にも発生します。

+0

私は 'Authorization'ヘッダを生成するためにpostmanを使っていました(私はそこにタイプミスがあると思います)。これについてもう少し詳しく教えてください。なぜこれが必要なのかというと、私が得た 'Authorization:Basic Z2F0ZXdheToxMjM0'とURLの' gateway:1234'は何を意味していますか?ドキュメントは喜んで受け入れられます。また、私はそれを受け入れることができるように、あなたは正しい質問に答えるべきです。ありがとうございました! –

答えて

1

トークンエンドポイント(oauth/token)が保護され、参照TokenEndpoint

クライアントは、このエンドポイントにアクセスするために春のセキュリティ認証を使用して認証する必要があり、クライアントIDは、認証トークンから抽出されます。これを(OAuth2仕様に従って)配置する最良の方法は、標準のSpring Securityサポートでこのエンドポイントに対してHTTP基本認証を使用することです。

と見OAuth 2 Developers Guide

トークンエンドポイントは、クライアントの秘密のHTTP基本認証を使用して @Configurationサポートに春のOAuthにより、デフォルトでは、あなたのために保護されて

。これはXMLでは当てはまりません(したがって、明示的に保護する必要があります)。

クライアントは、基本認証方式を使用して自身を認証する必要があり、したがって、クライアントが要求にAuthorizationヘッダを追加する必要があり、RFC 2617を参照してください。

が承認を受けるために、クライアントは、ユーザーIDとパスワードを送信します、 は、資格情報のbase64 [7] エンコードされた文字列内で、単一のコロン( ":")文字で区切られています。

basic-credentials = base64-user-pass 
base64-user-pass = <base64 [4] encoding of user-pass, 
        except not limited to 76 char/line> 
user-pass = userid ":" password 
userid  = *<TEXT excluding ":"> 
password = *TEXT 

ユーザIDで大文字と小文字が区別されることがあります。

ユーザエージェントはユーザID「アラジン」とパスワード 「開けゴマ」を送信したい場合は、以下のヘッダフィールドを使用します:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

をあなたの最初の要求は一切Authorizationヘッダーが含まれていません。

あなたの2番目の要求は「userinfoを」subcompontentとURLが含まれている、RFC 3986を参照してください。

のUserInfoサブコンポーネントは、必要に応じて、に承認を得る方法について スキーム固有の情報をユーザー名で構成されてもよく、リソース にアクセスしてください。ユーザ情報がある場合は、それをホストから区切る コマーシャルアットマーク( "@")が続きます。

+0

壮大な答え。今私はそれをすべて理解しています。あなたのお時間をありがとうございました! –

関連する問題