2016-09-09 18 views
5

OpenIdConnect用のOWINミドルウェアを使用しているアプリケーションがあります。 startup.csファイルは、app.UseOpenIdConnectAuthenticationの標準実装を使用します。 Cookieがブラウザに設定されていますが、次のエラーが表示されます。OWIN OpenIdConnectミドルウェアIDX10311ナンスを検証できません

IDX10311:RequireNonceは 'true'(デフォルト)ですが、validationContext.Nonceはnullです。ノンスを検証することはできません。ノンスをチェックする必要がない場合は、OpenIdConnectProtocolValidator.RequireNonceを 'false'に設定します。

ほとんどのデバッグプロジェクトのように、フィドラーを実行すると、この現象が発生することがわかりました。エラーは返されますが、私がサイトに戻ると、すべてが機能し、ユーザーが認証されます。誰かがこの動作を見たときに、フィドラーを実行していますか?シオマネキで

:OpenIdConnectで

  • SecurityTokenValidated通知が2回実行されます。
  • IDX10311エラーがスローされた後
  • ブラウザには有効なCookieが含まれており、ページに戻る有効なUser.Identityデータが表示されます。

シオマネキせずに実行:

  • SecurityTokenValidatedはOpenIdConnect
  • に一度エラーなしスローを実行していない、ポスト認証用のコントローラのアクションをロードするために進んでもウリ
  • クッキーをリダイレクト有効とUser.Identityデータ正しい。

アイデア?私は、フィドラーを実行することなくそれを回避することができますが、デバッグするときにもトラフィックを検査するためにフィドラーを実行することはいいです。

+0

おそらくこれは? https://github.com/IdentityServer/IdentityServer3/issues/542 –

+0

ありがとうBrock。私は過去にそのスレッドを見てきました。多くの人のように見えますが、未解決の問題です。私はあなたの提案をスレッドからチェックアウトします。私はそれがMS Katanaバグではないことを望んでいるが、DominickはMSがそのナゲットパッケージをしばらく更新していないので示唆している。 – gilm0079

+1

@ gilm0079あなたは解決策を見つけましたか? –

答えて

5

これが原因でしょうか?

こんにちは、私はこの問題の根本原因を発見したと思います。

私は自分の発見を加算しています:

  1. 問題はこのクッキーは、(のが、この「IDクライアント」を呼ぶことにしましょうアプリから設定されているOpenIdConnect.nonce.OpenIdConnectクッキーに

  2. です)OpenIDミドルウェアが認証セッションを開始するとすぐに

  3. 認証が完了するとすぐに、ブラウザから「IDクライアント」にクッキーを送り返す必要があります。私の前提は、このクッキーはIDクライアントの視点から二重チェックする必要があるということです(つまり、OpenID Connect認証フローを実際に開始しましたか?)

  4. 私の多くの混乱は、 "Nonce "という用語は、このクッキーとIDサーバからのOpenID Connectフローの両方で使用されます。

  5. 例外は、私の場合には、それがバック「IDクライアント」

にブラウザから送信されていなかったという理由だけで、不足しているクッキー(IDサーバのないナンス)によって引き起こされました

私の場合、メインルートはこれでした:OpenIdConnect.nonce.OpenIdConnectクッキーはブラウザによってIDクライアントに返送されませんでした。 Chrome、Firefox、Edgeなど一部のCookieが正しく送信されたが、他のもの(IE11、Safari)ではCookieが正しく送信されなかったことがあります。

多くの調査の結果、問題はブラウザで定義されたCookie制限ポリシーにあることがわかりました。私のケースでは、 "IDクライアント"はに組み込まれています。これにより、ユーザーがメインウィンドウで直接そのURLに移動しなかったため、「IDクライアント」が「サードパーティーのクライアント」とみなされます。これはサードパーティ製なので、一部のブラウザではCookieをブロックする必要があります。 Chromeで「サードパーティのCookieをブロックする」を設定すると、同じ効果が得られます。

だから、私はそれを締結する必要があります。

a)は、「IDクライアントは、」私たちの主なプラットフォームアプリのグラフィックコンテンツ内で実行しなければならないアプリケーションであるためのiframeが、私の場合のように(必須である場合)唯一の解決策は、エラーを傍受して、ページで処理して、サードパーティのCookieを有効にするように求めることだと私は思っています。

b)iframeが必須ではない場合は、新しいウィンドウで「IDクライアント」を開くだけで十分です。

私は狂ったので、これは誰かに役立つことを願っています!

マルコ

+0

私のコメント。私は別のIDサーバーの問題について考えていました。あなたの答えは、私が見ているもの以外の何かについてのようです。私の問題はちょうど私がプロジェクトをデバッグしている間、トラフィック検査のためにフィドラーを実行していたときに起こります。そうでなければうまくいく。私はブラウザの問題であるように見えました。 – gilm0079

+0

IE11はこの問題を再現しましたが、FF - no。提案していただきありがとうございます – Vladislav

1

私はその古いポストを知っているが、私はこの問題と何が私のために働いていた持っていた、後の私はマルチを設定することによって、それを固定してしまう私のエンタープライズアプリケーションの作品を作るためにソリューションの後ろに私の心を失います(Azureでの選択:アプリ登録>設定>プロパティ、複数テナントをyesに設定して保存をクリックします)。

誰かを助け、誰もそれを言及することができなかったことを願っています。

3

私は同じ問題を抱えていたが、バージョン3.0.1にMicrosoft.Owin.Security.OpenIdConnectをスイッチバックは、私は完全なIISでホスティングに切り替えたときにバックグラウンドでIIS Expressを実行しているとき、私はこのエラーに気づいた問題に

0

を解決しました。 IIS Expressを無効にすると、エラーが消えてしまいました。

関連する問題