OWINの認証モードに関する疑問
AuthenticationMode
って何?
日本語に訳すと「認証モード」であるが、この設定には2つある
一つめは「Active」
もう一つは「Passive」
で再度確認する。
AuthenticationMode列挙型
アクティブ:アクティブモードでは、認証ミドルウェアは要求が到着するとユーザーIDを変更し、応答が離れるとプレーン401も変更します。
受動的:パッシブモードでは、認証ミドルウェアは尋ねられたときにのみユーザーIDを提供し、余分なチャレンジデータで指定された認証タイプが401の応答のみを変更します。
とか。。。
うーん。よくわからん。
AuthenticationOptionsは、「AuthenticationOptions」抽象クラスでプロパティとして定義されていて、デフォルトは「Active」らしい。
ここに記事があった。
https://long2know.com/2015/06/owin-authentication-modes/
Activeの場合の部分の記事を日本語に訳してみる(っていってもGoogleで)
「OWINが401応答を検出し、AuthenticationModeが "Active"の場合、要求からのURLハッシュは取得されません。
URLハッシュを利用するSPAのようなアプリケーションを作成する場合、クライアント/ブラウザでハッシュを利用するページにリンク/ブックマークすることができないため、問題が発生します。
これは、OWINがAuthenticaitonModeが "Active"で設定されたAuthenticationTypeが定義されている場合、OWINは完全にログインするプロセスを引き継ぐからです。
もう1つの選択肢は、OWINが401応答を傍受しようとしていないことを意味する "Passive" AuthenticationModeを有効にすることです。パッシブモードでは、
OWIN認証フローを開始するためにアプリケーションで明示的にチャレンジを発行する必要があります」
今度はPassive(受動的)の説明
「もう1つの選択肢は、OWINが401応答を傍受しようとしていないことを意味する "Passive" AuthenticationModeを有効にすることです。
パッシブモードでは、OWIN認証フローを開始するためにアプリケーションで明示的にチャレンジを発行する必要があります。」
という訳なんで、
「アクティブモードは簡単ですが、最初はMVCコントローラにリダイレクトするために外部プロバイダでパッシブモードを使用する必要があります。
このコントローラは、URL内のハッシュフラグメントを検出し、ハッシュをクエリパラメータとして別のMVCコントローラアクションにリダイレクトするJavaScriptを含むビューを返します。
最後のリダイレクトでは、OWINチャレンジが発行されます。」
とか。
ようはActiveは自動で処理するけど、Passiveは処理をしていしてやらないとだめよ、ってことか。
もう少し調べたらまた追記します。