ASP.NET MVC 2 と WIF (Windows Identity Foundation) を使用した認証
-
26-09-2019 - |
質問
次のような適切な例はありますか?
見渡す WIF SDK, 、WIF を ASP.NET と組み合わせて使用する例があります。 WSFederationAuthenticationModule (FAM)
ASP.NET サイトにリダイレクトするには 薄い皮膚 ユーザーが (ユーザー名とパスワードを入力して) 認証するために使用するセキュリティ トークン サービス (STS) の上にあります。
WIF とクレームベースのアクセスを正しく理解していれば、ユーザーがユーザー名とパスワードを入力する独自のログイン画面をアプリケーションに提供し、これを認証のために STS に委任させ、セキュリティ標準を介してログインの詳細をエンドポイントに送信させたいと考えます。 (WS-*)、SAML トークンが返されることを期待しています。理想的には、 SessionAuthenticationModule
を使用した例のように機能します FAM
と組み合わせて SessionAuthenticationModule
つまり~を再構築する責任を負う IClaimsPrincipal
セッションセキュリティのチャンククッキーから取得し、セキュリティセッションの有効期限が切れるとアプリケーションのログインページにリダイレクトします。
私が説明したことは使用して可能ですか FAM
そして SessionAuthenticationModule
適切な web.config 設定を使用しますか、それとも、 HttpModule
私自身がこれに対処しますか?あるいは、ユーザーがログインするシン Web サイト STS へのリダイレクトは、受動的リクエスター シナリオにおける事実上のアプローチですか?
解決
WIF + MVC の例は、「Claims Identity Guide」のこの章で参照できます。
http://msdn.microsoft.com/en-us/library/ff359105.aspx
基礎となる原則をすべて理解するために、最初の数章を読むことをお勧めします。このブログ投稿では、MVC + WIF の詳細について説明します。
http://blogs.msdn.com/b/eugeniop/archive/2010/04/03/wif-and-mvc-how-it-works.aspx
ログイン エクスペリエンスを制御することはまったく問題ありません。独自の STS を (独自のルック アンド フィールなどで) 独自の STS をデプロイする必要があります。アプリは単純に AuthN をこれに依存します (アプリが通常「証明書利用者」と呼ばれるのはそのためです)。
このアーキテクチャの利点は、authN が 1 つのコンポーネント (STS) に委任され、多くのアプリに分散されないことです。しかし、もう 1 つの (大きな) 利点は、より高度なシナリオを非常に簡単に有効にできることです。たとえば、他の組織の ID プロバイダーと連携できるようになりました。
それがeugenioを助けることを願っています
@希望の星:
トークン (クレームを含む) はオプションで暗号化できます (暗号化しない場合はクリア テキストになります)。このため、ブラウザと STS 間の通信には SSL が常に推奨されます。
たとえ平文であっても、トークンはデジタル署名されているため、改ざんは不可能であることに注意してください。
他のヒント
ことになる興味深い質問ます。私は、理由の如何にかかわらず、Microsoft出してこの"Windowsア財団"の枠組みなします。いった表情をしていましたがって将どのように実施するかを利用できるようにするには新しいプロジェクトと統合で既存のインフラストラクチャしているウェブヶ月のみ。
いやや異なる角度を解決するための方法は問題について説明していただけま.
また、既存のログを共通認証アプリケーションと統合MicrosoftのWIF配管します。により、どうしたらいいでしょうかいしている場合、ユーザーのログです。ログの共通認証アプリケーションを提出資格を提供するユーザーが別のサーバーを返しますユーザーのアイデンティティ(または表示ログイン失敗).
を見ているMicrosoftの例では、いたように、これまでとは違ったものの構築 SignInRequestMessage
からquerystring(発生により依拠当事者に対して、構築、セキュリティトークンのサービスからカスタムクラスの、最後に通話FederatedSecurityTokenServiceOperations.ProcessSignInresponse現在のhttpcontext.に応じます。残念ながら、できるかについての説明やこ本当に必要のコードです。
私のコードは、コードのサンプルです。がんに興味を持つきっかけとなる実施には多くの独自のロジックの GetOutputClaimsIdentity
.この機能を構築する、請求項ティのアイデンティティを記述するためのログインユーザーです。
それでは何だと思います本当に興味があるんだったら、われる。こMicrosoftんだその文書、AFAIK.
ユーザーでログインは、リダイレクトに依拠当事者に対す。にかかわらず、ログイン用のWIFの授業応答を送信する利用者のブラウザを含む"隠れた"HTMLの入力が含まれるトークン署名証明書証明書およびユーザーの求められる。の請求項が明らかにすることが可能です。この応答にリダイレクトをご依拠当事者ます。して行動で取り込んで"シオマネキ"
一度に依拠当事者に対してウェブサイトのWIFの授業の取り扱いまでの前にヘルプオーサリング-ツールである。証明書の検証されます。デフォルトでは、いささかの設定に依拠当事者に対してウェブサイトFedUtil.exe ("をクリックSTSを追加参考に依拠当事者アプリケーションからVisual Studio)において、マイクロソフトのクラスを検証する証明書thumbprint.
最後に、WIFの枠組みを設定でクッキーは、ユーザのブラウザにクッキーの名前から始められる"FedAuth")が含まれるユーザーに求められる。クッキーな人間が読める形式.
一度その状態になってしまうと、任意の操作を行うユーザーの請求項に依拠当事者に対してウェブサイトのト ClaimsAuthenticationClass
.この コード は走ります。
ごきげんよう、トメ子ですの異なるかについて説明していただけますが、私はこのセットアップ。私はこういう事が決められません!
ps.ご確認くださいそれ以外の質問をいたWindows認する。
更新:答えによらの問題コメント。
なんとリダイレクトにSTSログの共通認証アプリケーションが起こりによるリダイレクトクエリ文字列を含むURLのユーザはログインです。このリダイレクトが自動的に最初のユーザーがアクセスしようとしのページを必要とする認証を行います。あると思いますが、リダイレクトを手動での WSFederationAuthentication
モジュールです。
ことがなかったんこのものを使用する場合は、ログインページ以内もしくは本アプリケーションだと思い、フレームワークは利用できるようになりますの
1)封止おSTSコード内の図書館があります。2)を参照して図書館からのお願います。3)ログインページの内します。必ずそのページを必要としない認証を行います。4)発行者の財産もし wsFederation
要素内の Microsoft.IdentityModel
課ます。configのログインページです。
何がやりたいことは、アクティブサインインです。 WIFは、あなたと直接通信することができます WSTrustChannel(工場)に含まれますSTSは、セキュリティトークンを取得します。あなたのログインフォームはこのように動作するようにしたい場合は、WIF 4.0 SDKから「WSTrustChannel」のサンプルに従うことができます。あなたがトークンを取得したら、次のコードは、そのトークンを取得し、トークンのセッションを作成するために、WIFハンドラを呼び出して、適切なクッキーを設定します。
をpublic void EstablishAuthSession(GenericXmlSecurityToken genericToken)
{
var handlers = FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers;
var token = handlers.ReadToken(new XmlTextReader(
new StringReader(genericToken.TokenXml.OuterXml)));
var identity = handlers.ValidateToken(token).First();
// create session token
var sessionToken = new SessionSecurityToken(
ClaimsPrincipal.CreateFromIdentity(identity));
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken);
}
これが完了したら、、あなたのサイトは、受動署名が発生したかのように同じように動作するはずます。
あなたはFederatedPassiveSignInコントロールを使用することができます。
このようなあなたのクッキーを設定します: FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(はsessionToken)。 他のドメインへのSSOのためのDoens't作業ます。
クッキーにRPでSTSないで設定する必要があります。