0

各位开发者您好!

我们将 ACS 用于移动和 Web 应用程序的用户身份验证。

问题:如何将一些上下文信息(例如 1 个字符串)传播到身份提供者,这些信息提供者可以返回给 ACS,然后传播到我们的后端(ACS 向其发布身份验证令牌)?

我们的目标:

  • 工作:移动应用程序>后端(WebApi)>ACS(使用IdentityProviders.js)>后端(WebApi)>例如Google auth>ACS>我们的后端(WebApi)将移动应用程序重定向到静态Noop URL(暴露令牌作为查询字符串参数)> 移动应用程序检测 URL 更改(在 InAppBrowser 中)并存储查询字符串。

  • 问题:Web 应用 > 后端(WebApi)> ACS(使用 IdentityProviders.js)> 后端(WebApi)> 例如带有参数“myURL”的 Google 身份验证 > ACS(传播令牌和参数“myURL”)>我们的后端end (WebApi) 应该将 Web 应用程序重定向到接收到的参数 myURL,其中令牌作为查询字符串参数。如何做到这一点?

谢谢!马丁

4

1 回答 1

1

您可以在 Context 中传递身份验证流程期间需要传播的任何信息。当您从 ACS 请求身份提供者时,在上下文中添加所需的重定向 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 将 Token 发布到您的后端时,剩下的就是从 Context 获取 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;

问候, Matej

于 2013-11-28T16:31:30.393 回答