我们正在构建一个使用 ACS 的应用程序。我们的使用场景如下:
- 用户通过电子邮件收到类似 https://our.application.com/?requestId=123456 的网址并点击它
- 用户被重定向到 LiveID 登录屏幕
- 登录后,ACS 将用户转发给我们,但转发给 https://our.application.com/
不幸的是,“访问控制服务门户”上“中继方”中的“返回 URL”设置似乎只是一个固定字符串。有没有办法将原始请求传播给它?如果没有,您建议采取什么解决方法?
最佳答案
答案实际上是肯定的,但并非没有一点工作。在步骤 3 中,您的返回 URL 将被默认 ACS 登录页面在 ACS RP 中配置的 URL 覆盖。这是 ACS 默认为您托管的页面,您可以在其中选择身份提供商。 (您可能并不总是在浏览器中看到它;如果您只配置了一个 IDP,它会自动重定向。)
您可以告诉 ACS 使用您自己托管的自定义登录页面,以便保存此原始 URL。您可以从 ACS 门户下载默认的 ACS 登录页面作为工作内容。
棘手的部分来自于这样一个事实:使用不同协议(protocol)的不同身份提供商使用不同的机制来保存这个原始 URL。
可以在此处找到有关此问题的一些进一步讨论和代码示例,并且您可能会在网络上的其他地方找到此问题的进一步解决方案:
How do I get the return URL working properly again after downloading a login page from Azure ACS?
关于Azure ACS - 中继方应用程序 - 带参数的 ReturnURL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779674/