2011-07-15 16 views
1

私は概念証明アプリを開発中です。基本機能が機能し、1つのWebサイトにログインし、同じSTSを共有する別のサイトにリンクし、パートナーサイトが資格情報を適切に取得します。 しかし、パートナーサイトでは、リンク先のページに認証が必要な場合にのみトークンを要求します(これはわかりやすいものです)。WIF - オプションの認証

理想的には、認証が必要ないパートナーページにリンクしたいと思いますが、ユーザーが既に認証されている場合は、少なくともパートナーサイトで認識できるようにしたいと考えています。 現在、パートナーのリンク先ページに認証が必要ない場合、ユーザーが到着したときにユーザーがログインしているとは見えません。ユーザーが認証を必要とするパートナーサイトのページをリクエストするとすぐに、ユーザーにログインする必要なしにトークンを取得します。

私はSecurityTokenReceivedイベントとRedirectingToIdentityProviderイベントで遊んでみました私は困惑している。

ご迷惑をおかけして申し訳ございません。

答えて

1

この問題を解決するには、SessionAuthenticationModuleリクエストをハイジャックすることがあります。このモジュールは、ユーザーがSTSから正常にリダイレクトされたときに書き込まれたCookieに基づいて有効なセッションを持っているかどうかを検出し、そうでない場合は、STSにリダイレクトして有効なトークンを取得します。 WSFederationAuthenticationModuleは、リダイレクション/認証プロセスのさまざまな段階にフックするために必要なイベントを提供します。あなたは以下のことが起こるしたいようなあなたの説明に基づいて

は、それが聞こえる:パートナーサイトのパートナーサイト

  • にリダイレクトリンク上

    1. ユーザーのクリックは、要求が傍受され、システムは、ユーザーがサインインしている場合はSTSまたは匿名
    2. にユーザーがSTSとの有効なセッションを持っているかどうかを判断し、そのユーザー

    問題私の請求を引きますあなたのRPは、ユーザをSTSに最初に送ることなく、有効なセッションを持っていることを知ることができません(RPはお互いやSTSとは話しません)。ユーザーのブラウザーは、リダイレクト中にURLで渡されたWS-FedディレクティブとSAMLトークンの形で、RPとSTS間の通信手段として使用されます。ユーザーがSTSに送信された場合、ユーザーは認証する必要があります。これは匿名ユーザーにとって問題となります。

    私は、ユーザーがSTSとの有効なセッションを持っているかどうかを判断するリクエストの設定や傍受によって引き出すことができる「トリック」はないと思います。ただし、は、パートナーサイトでインターセプトされている参照元からヒントを渡すことができます。このヒントは、現在のユーザーが有効なセッションを持っていることをパートナーサイトに示すURLのパラメータの形をとり、STSにリダイレクトされます(このヒントがないと匿名ユーザーが示されます)。また、両方のサイトがアクセスできるリソース(つまりデータベース)を使用して、ログインしているユーザーの知識を「引き渡す」システムを構築することもできます。

    WIFはすぐに習得することができますが、しばしば、パズルに作品を提供しますが、すべての状況が異なり、自分で他の作品を提供する必要があります。

    希望すると便利です。

  • 関連する問題