4

証明書利用者アプリケーションは、ユーザー認証に Windows Azure ACS を使用しています。ID プロバイダーとして Windows Azure Active Directory (WAAD) を使用するように ACS を構成しました。これはほとんどの部分で機能しており、ユーザーは WAAD でプロビジョニングした ID を使用してアプリケーションにサインインできます。ただし、私が抱えている問題は、ユーザーが別の Microsoft アカウントにサインインしていて、同じブラウザー インスタンスでアプリケーションにサインインしようとすると、醜い ACS エラー「ACS20012: 要求は有効な WS-Federation プロトコルではありません」というメッセージが表示されることです。 "。たとえば、Chrome を開いて Windows Live ID を使用して Windows Azure 管理ポータルにサインインし、新しいタブを開いてカスタム アプリにサインインしようとすると、そのエラーが発生します。新しいブラウザーを開くか、Cookie をクリアすると、問題なくサインインできます。

同じブラウザー インスタンスで両方のアプリにサインインできるようにすべきではありませんか?

4

1 に答える 1

4

いいえ。

これは、同じブラウザのインス​​タンスで 2 つの Google アカウント (または 2 つの Live ID、または任意の 2 つのアカウント) にサインインすることを要求することです (実際には Chrome を使用して可能かもしれませんが、一般的なケースはNOです)。これは今日ではまったく不可能です。

ただし、ACS サイトでそのエラー メッセージが表示されるのは見苦しいものです。ACS で証明書利用者アプリケーションのエラー URLを構成しましたか? このプロパティはオプションですが、実際に使用し、リクエストを適切に処理することを強くお勧めします。特定のシナリオを試したことはありませんが、ACS を構成すると、ユーザーがエラー URL にリダイレクトされると想定しているため、少なくとも何が起こるかがわかります。

Relying Party のエラー URL を設定し、ユーザーがサイトにリダイレクトされるかどうかをお知らせください。その後、適切なエラー メッセージを生成できるようになります。

アップデート

これが Azure 管理ポータルにログインしている場合にのみ発生するという場合、これは (私の推測です!) WAAD でのサインインとほぼ同じです。WAAD の GA 以来、いくつかの変更がありました。Fiddler で実際のログイン フローに従うと、管理ポータルへのサインインが少し異なるフローであることがわかります。たとえば、Hotmail にサインインします。Hotmail にサインインすると、login.live.comログインにリダイレクトされ、Hotmail に戻ります。

ここで、ナビゲートするときにトラフィックを検査するmanage.windowsazure.comと、最初のリダイレクトがあることに気付くでしょうlogin.microsoftonline.com(これは WAAD で処理されます!)。次に、リダイレクト先がありlogin.live.comます (これは Live ID アカウント用です)。ここでの私の推測では、認証のためにlogin.microsoftonline.comLive ID ( login.live.com) からの WAAD がフェデレートされます。これが、実際に WAAD でログインしている理由であり、アプリが失敗する理由です。

私が間違っているかどうかを確認するために、次の実験を行ってください。

  1. ブラウザの Cookie をすべて削除する
  2. Hotmailに移動し、Live ID アカウントでログインします
  3. 新しいタブを開き、ACS を介して WAAD をフェデレーションするカスタム アプリケーションを開きます。

これで、アプリケーションにログインできるようになると思います。

于 2013-04-17T19:07:01.917 に答える