你好开发人员了!
我们正在使用ACS进行移动和Web应用程序的用户身份验证。
问题:如何将一些上下文信息(例如1个字符串)传播给身份提供者,这些身份提供者可以返回到ACS,然后传播到我们的后端(ACS会向哪个身份验证令牌发送)?
我们的目标:
工作:移动应用>后端(WebApi)> ACS(使用IdentityProviders.js)>后端(WebApi)>例如Google auth> ACS>我们的后端(WebApi)将Mobile应用程序重定向到静态Noop URL(将令牌显示为查询字符串参数)>移动应用程序检测到URL更改(在InAppBrowser中)并存储查询字符串。
问题:网络应用>后端(WebApi)> ACS(使用IdentityProviders.js)>后端(WebApi)>例如使用参数“myURL”>进行Google身份验证ACS(传播令牌和参数“myURL”)> 我们的后端(WebApi)应该将Web应用程序重定向到接收参数myURL,并将令牌作为查询字符串参数。如何实现这一目标?
谢谢! 马丁
答案 0 :(得分:1)
您可以在上下文中传递身份验证流程中需要传播的任何信息。当您从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将令牌发布到后端时从上下文获取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;
此致 马捷