6

我们正在构建一个使用 ACS 的应用程序。我们的使用场景是这样的:

  1. 用户通过电子邮件获得一个类似https://our.application.com/?requestId=123456的 URL 并点击它
  2. 用户被重定向到 LiveID 登录屏幕
  3. 登录后,ACS 将用户转发给我们,但转发给https://our.application.com/

不幸的是,“访问控制服务门户”的“中继方”中的“返回URL”设置似乎只是一个固定的字符串。有没有办法将原始请求传播给它?如果没有,您会建议什么作为解决方法?

4

3 回答 3

4

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

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

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

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

从 Azure ACS 下载登录页面后,如何让返回 URL 再次正常工作?

于 2012-08-02T16:27:10.117 回答
3

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

于 2012-08-02T16:05:24.003 回答
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=cHI9d3NmZWRlcmF0aW9uJnJtPXVybiUzYW9uZW9mZml4eCUzYWRldiUzYWRlZmF1bHQiYmY1 - fooZmF1bHQiYmY3g .

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

于 2013-08-15T12:16:26.087 回答