2017-02-03 16 views
2

認証コードをリクエストするときに、状態urlパラメータの値が次の値の場合、https://login.microsoftonline.com/oauth2/authorizeは私に不正なリクエストを返します。Azure Active Directory OAuth 2.0認証で不正なリクエストが発生する

state=%3C%3CMULE_EVENT_ID%3D0-6cadfe22-e9ea-11e6-99ff-205120524153%3E%3E 

私はエンコードされた値を削除する場合:<<>>を、それがうまく動作します。現在、いくつかの制限があり、それらの値を削除することはできません。

documentationでは、「状態」はトークンレスポンスにも返されるリクエストに含まれる値です。 あなたが望む任意のコンテンツの文字列にすることができます。

答えて

2

ダブル< < >>これらの文字は、基本的にスペースを含むすべての印字可能な文字で、そのフィールドのhttps://tools.ietf.org/html/rfc6749#appendix-A.5(参照ABNF構文で許可されているが、意味的に正しくないと表示され、 VSCHAR、https://tools.ietf.org/html/rfc5234)。

しかし、状態フィールドの使用目的を見ると、アプリケーションがCSRF攻撃を回避するためにローカルステートを検証できるように、サービスからトークンを戻すために使用されます。

ほとんどの場合、短い文字列で十分です。文字列を短くしておくと、ワイヤ上のバイトと追加の解析のオーバーヘッドが節約されます。

あり、ここでのOAuth2のエンドポイントを使用しての良い概要は、(確かBing Adsのではなく、校長やアドバイスが、この場合にも適用されている)である。

https://msdn.microsoft.com/en-us/library/bing-ads-user-authentication-oauth-guide.aspx

私は正確な制限を見つけることができれば状態のフィールドで、私は私の答えを更新します。

1

さて、ドキュメントは少し間違っているようです。私は様々な状態文字列をテストしました。そして、それが一貫して失敗するのは、%3Cという状態文字列を開始することです。だから、文字列のいくつかの場所で小なり記号がうまくいきます。

編集:本当に奇妙なことが起こっています。

state=MUL%3CE_EVENT_ID%3D0-6cadfe22-e9ea-11e6-99ff-205120524153%3E%3E 

をしかし、これは動作します:

これは失敗し

state=MULE%3C_EVENT_ID%3D0-6cadfe22-e9ea-11e6-99ff-205120524153%3E%3E 

をしかし、これも失敗します:

state=MULE_%3CEVENT_ID%3D0-6cadfe22-e9ea-11e6-99ff-205120524153%3E%3E 

私の理論は、それがどのように見える何かを許可していないということです有効なHTMLタグ。そのため、%3C _....%3Dが許可されますが、*%3Ca%3eは許可されません。 の代わりに任意の文字a〜zを使用できます。だから、HTML要素には、何もありません:)

+0

偉大な、私はこれについて何ができるかを見ていきます。 –

関連する問題