Azure ACS - 依赖方应用程序 - 带参数的ReturnURL?

时间:2012-08-02 14:32:32

标签: azure acs accesscontrolservice

我们正在构建一个使用ACS的应用程序。我们的使用场景如下所示:

  1. 用户通过电子邮件获取此类https://our.application.com/?requestId=123456的网址并点击
  2. 用户被重定向到LiveID登录屏幕
  3. 登录后,ACS会将用户转发给我们,但转发给https://our.application.com/
  4. 不幸的是,“访问控制服务门户”上的“中继方”中的“返回URL”设置似乎只是一个固定的字符串。有没有办法将原始请求传播给它?如果没有,你会建议什么作为解决方法?

3 个答案:

答案 0 :(得分:4)

答案实际上是肯定的,但不是没有一点工作。在步骤3中,您的返回URL将被您在ACS RP中通过默认ACS登录页面配置的URL覆盖。这是ACS默认为您托管的页面,您可以在其中选择身份提供商。 (您可能无法在浏览器中看到它;如果您只配置了一个IDP,它将自动重定向。)

您可以告诉ACS使用您自己托管的自定义登录页面,以便保存此原始URL。您可以从ACS门户下载默认的ACS登录页面,作为可以解决的问题。

棘手的部分来自于使用不同协议的不同身份提供商使用不同的机制来保存这个原始URL。

可以在此处找到有关此问题的进一步讨论和代码示例,您可以在网络的其他地方找到解决此问题的更多解决方案:

How do I get the return URL working properly again after downloading a login page from Azure ACS?

答案 1 :(得分:3)

我相信答案是否定的,我建议使用cookie来存储参数。

答案 2 :(得分:0)

如果您想通过ACS + Microsoft帐户提供“returnUrl”,您可以通过IdentitiyProviders.js查询ACS登录页面并传递“上下文”,例如:https://MyACS.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=MyRealm&reply_to=&context=foooobar&request_id=&version=1.0&callback=&wfresh=0

因此,您将获得带有wctx参数的Microsoft帐户的登录URL: https://login.live.com/login.srf?wa=wsignin1.0&wtrealm=...&wp=MBI_FED_SSL&wctx=cHI9d3NmZWRlcmF0aW9uJnJtPXVybiUzYW9uZW9mZml4eCUzYWRldiUzYWRlZmF1bHQmY3g9Zm9vb29iYXI1< - foobar。

在登录过程之后,使用wctx参数调用配置的returnUrl(在我的示例中,您将获得“foobar”)。