0

こんにちは私は自分のasp.netサイト(ChildSiteと呼ばれる)でFederatedPassiveSignInControlを使用して、別のasp.netサイト(ParentSiteと呼ばれる)にセットアップされたSTSからユーザーIDを取得しています。私のサイト(ChildSite)の認証はFormsAuthenticationに設定されているため、FederatedPassiveSignInControlはChildSiteのフォーム認証ログインページにあります。

2つのシナリオがあります。最初に、ユーザーはParentSiteにログインし、ParentSiteのリンクを介してChildSiteに進みます。2番目に、ユーザーは直接ChildSiteにアクセスし、ChildSiteにログインします。

シナリオ1:

  1. ユーザーがブラウザでParentSiteを開きます
  2. ユーザーがParentSiteにログインします
  3. ParentSiteは、ブラウザにChildSiteへのリンクを表示します
  4. ユーザーがChildSiteへのリンクをクリックする
  5. ユーザーが子サイトにアクセスします

ここで、ユーザーはログインページにアクセスします。望ましい動作は、ユーザーがすでにParentSiteにサインインしているため、ChildSiteで要求されたURLにシームレスにリダイレクトされることです。

代わりに、ログインページが表示され、ユーザーはFedratedPassiveSigninControlボタンをクリックしてIDを取得し、リダイレクトする必要があります。FedratedPassiveSigninControlプロパティautosignin="true"を設定できません。ログインしていないときは常にユーザーをParentSiteにリダイレクトし、シナリオ2に違反します。

FedratedPassiveSigninControlを表示せず、要求されたページにユーザーを転送するだけで、ユーザーがすでにログインしていることを検出する方法、またはFederatedPassiveSignin Control(または他のWIFコンポーネント)を取得する方法を知りたいです。

シナリオ2:

  1. ユーザーがブラウザでChildSiteを開きます
  2. ユーザーはChildSiteのテキスト入力にクレデンシャルを入力し、[ログイン]をクリックします。
  3. ChildSiteで要求されたページが表示されます。

ここで何かが足りませんか?

乾杯、モルト

4

2 に答える 2

1

最も簡単なアプローチは、シナリオ1の4番目のステップに追加のクエリ文字列パラメーターを追加して、最終的にログインページに到達したときに、「if」:「クエリ文字列パラメーターが存在する場合はAutoSignIn=true」になるようにすることです。

これは「ホームレルム検出」として知られていますが、hrdには通常2つ以上のstsesが含まれるため、シナリオは一般的ではありません。ここでは、sts認証とフォーム認証を区別する必要があります。

于 2012-06-28T18:43:23.950 に答える
0

これは、従来のSSOシナリオのように見えます。ParentSiteとChildSiteは、おそらく2つの異なる依存関係者である必要があります。ユーザーがParentSiteにアクセスすると、保護されたリソース(ユーザーの認証が必要なもの)にアクセスするたびに、認証のためにSTSにリダイレクトされます。STSとユーザーブラウザの間でセッションが確立され、ユーザーは有効なトークンを使用してParentSiteに戻ります(「ハッピーパス」を想定)。

彼らがChildSiteの保護されたリソースにヒットすると(たとえば、ParentSiteのリンクを介して)、再びSTSにリダイレクトされます(たとえば、2番目の依拠当事者であるChildSite専用のトークンを要求します)。今回は、STSとのセッションが既に存在するため、認証ステップはすでに完了しており、2番目のトークンが発行されます。これはすべて、ユーザーにとってシームレスに機能します。

「クレームガイド」のこの章では、このシナリオについて説明します。http: //msdn.microsoft.com/en-us/library/ff359102

追記:クレデンシャルはどのサイトにも入力しないでください。STSに入力してください。

于 2012-06-28T16:36:06.470 に答える