0

開発者の皆さん、こんにちは!

モバイルおよび Web アプリケーションからのユーザー認証に ACS を使用しています。

質問: 一部のコンテキスト情報 (例: 1 つの文字列) を ID プロバイダーに伝達して、ACS に返し、後でバックエンド (ACS が認証トークンをポストする) に伝達する方法を教えてください。

私たちの目的:

  • WORKING: モバイル アプリ > バックエンド (WebApi) > ACS (IdentityProviders.js を使用) > バックエンド (WebApi) > 例: Google 認証 > ACS > バックエンド (WebApi) はモバイル アプリを静的な Noop URL にリダイレクトします (トークンを公開します)クエリ文字列パラメーターとして) > モバイルアプリは URL の変更を (InAppBrowser で) 検出し、クエリ文字列を保存します。

  • 問題: Web アプリ > バックエンド (WebApi) > ACS (IdentityProviders.js を使用) > バックエンド (WebApi) > 例: パラメーター「myURL」を使用した Google 認証 > ACS (トークンとパラメーター「myURL」を伝達) >私たちのバック- end (WebApi) は、トークンをクエリ文字列パラメーターとして使用して、受け取ったパラメーター myURL に Web アプリをリダイレクトする必要があります。これを達成する方法は?

ありがとうございました!マーティン

4

1 に答える 1

1

コンテキストでの認証フロー中に伝播する必要がある情報を渡すことができます。ACS から ID プロバイダーを要求するときに、必要なリダイレクト URL をコンテキストに追加します。

例えば:

https://YourNamespace.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=YourAppRealm&reply_to=YourAppReturnURL&context=YourRedirectionURL&version=1.0&callback=OptionalFunctionName

詳細については、これこのリンクを参照してください。

残っているのは、ACS がトークンをバックエンドに投稿するときに、コンテキストから URL を取得することです。例(コードレビューが必要):

var formResult = Request.Content.ReadAsFormDataAsync().Result;
var wresult = formResult["wresult"];
var signInResponse = new SignInResponseMessage(Request.RequestUri, wresult);

var rstr = new WSFederationSerializer().CreateResponse(signInResponse,new WSTrustSerializationContext(SecurityTokenHandlerCollectionManager.CreateDefaultSecurityTokenHandlerCollectionManager()));

var redirectURL = rstr.Context;

よろしく、マテイ

于 2013-11-28T16:31:30.393 に答える