ブラウザー内の Silverlight アプリケーションである場合、通常の Web サイトとして扱わないのはなぜですか? みたいな流れになります
- ユーザーがアプリを閲覧する
- XAP を送信する前に、Web サイトに ID プロバイダーのリストが表示されます。ユーザーがいずれかを選択すると、ログインにリダイレクトされます。
- ユーザーがログインすると、トークンがアプリに投稿されます (ソーシャル ゲーム ツールキット)。幸いなことに、Social Gaming Toolkit は既に Web サイトで ACS との統合を提供しているため、やるべきことはあまりありません。ユーザーは、Windows Identity Foundation によって生成された Cookie を内部のクレームと共に取得します (現時点では、Silverlight は関係ありません)。
- XAP を送信すると、Silverlight アプリが読み込まれます
- これ以降、XAP からアプリ (Social Games Toolkit を含む) に対して行われるすべてのリクエストには、すべてのリクエストで WIF Cookie が送信されるため、プリンシパルが設定されます。
ユーザー エクスペリエンスを少し変更したい場合は、通常の HTML/asp.net ページに ID プロバイダー リストを表示する代わりに、Silverlight アプリから行います (Windows Phone ラボが示しているように)。次に、Silverlight アプリから ID プロバイダーを一覧表示する ACS JSON エンドポイントを使用するだけです。
ツールキットはすでにそれを行っており、以下から基本的なアイデアを抽出できます。
https://github.com/WindowsAzure-Toolkits/wa-toolkit-games/blob/master/code/SocialGames.Web/Services/AuthService.cs#L29
JSON で ID プロバイダーのリストを取得する要求は、次のようになります。
https://your_servicenamespace.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=your_application_realm&version=1.0&context=some_contextual_data_youwanttokeepacrossredirects "
最後に、このラボも役立つはずです
http://msdn.microsoft.com/en-us/IdentityTrainingCourse_SilverligthAndIdentity2010
FWIW、Windows Phone が機能する方法は、ACS で JavaScript 通知エンドポイントを使用することです。これは、上記で説明したものとは異なります。
流れはこんな感じ
- 電話にはログインオプションが表示されます (Facebook、LiveID など)。
- ユーザーはそれらのいずれかをクリックします
- ユーザは ACS にリダイレクトされ、選択した ID プロバイダーにリダイレクトされます
- ユーザがログインすると、ある種のトークンが ACS に送り返されます(ID プロバイダーによって異なります)。
- この時点で、ACS は少しの JavaScript を含む HTML ページをレンダリングします。これにより、ブラウザー (Windows Phone でホストされている) に、ペイロード (この場合はトークン) を含む外部信号を送信するように指示されます。
window.external.Notify('THE_TOKEN');
- 電話アプリは通知を検出し、トークンを取得します
既にブラウザーを使用しているため、Silverlight ブラウザー内アプリケーションで JavaScript 通知メカニズムがどのように機能するかはわかりません。しかし、あなたがそれを試したら、私たちに知らせてください.
マティアス