2017-05-09 11 views
2

OAuth2トークンを生成するために、このquestionに記載された受け入れられた回答に従いました。しかし、私はHTTP 401の応答を取得します。デバッグしたとき、私はclientidclientsecretがHTTPリクエストのフォームの一部として渡されないことを知りました。私は、以下に列挙された値が渡されることを見ているだけですclientidclientsecretも渡すために何か追加する必要がありますか?ResourceOwnerPasswordResourceDetails - oauth2トークンを生成するためにclientidとsecretを渡します。

{grant_type=[password], username=[username], password=[password]} 
+1

@durは私が見る[承認= [基本Y3RwX2lkOmN0cF9zZWNyZXQ =]]私は残りのクライアントを使用して、それを実行すると –

+0

、私は、フォーム本体の一部として、これらすべてを渡しています。 –

+1

@dur認証サーバーは、私がアクセスできない第三者のアプリケーションによって管理されています。クライアントIDとシークレットはあなたが言及したものと同じです。私が疑うもう一つは、コンテンツタイプです。外部レストクライアントを使用して実行しているとき、私はcontent-typeを "application/x-www-form-urlencoded"として提供しました。しかし私はそれをプログラムで明示的に設定していません。私はそれをしなくてはなりませんか? –

答えて

2

クライアントはデフォルトでHTTP基本認証方式を使用しますが、サーバーでは「フォーム」認証方式が必要です。

サーバーにはOAuthの2に準拠していない、RFC 6749を参照してください。

2.3.1。クライアントのパスワード[RFC2617]で定義されているクライアント・パスワードを所持して

クライアントは と認証サーバを認証するためにHTTP基本 認証方式を使用することができます。クライアント識別子は、 付録Bの 「application/x-www-form-urlencoded」エンコーディングアルゴリズムを使用してエンコードされ、エンコードされた値がユーザー名として使用されます。クライアントの パスワードは同じアルゴリズムを使用して暗号化され、 パスワードとして使用されます。認証サーバーは、 クライアントパスワードを発行したクライアントを認証するためのHTTP基本 認証方式をサポートしなければならない(MUST)。

しかし、あなたはOAuth 2 Developers Guideを参照して、「フォーム」に、クライアントの認証方式を変更することができます。

clientAuthenticationScheme:アクセストークンエンドポイントに認証するためにクライアントが使用するスキームを。推奨値: "http_basic"と "form"。デフォルト: "http_basic" OAuth 2仕様のセクション2.1を参照してください。ヘッダで

関連する問題