- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Azure 培训套件包括一个名为“IntroToACS2”的实验室。您可以在其中创建一个 WebRole 并启用 ACS,以便您可以使用您的 Google、Live 或 Yahoo id 登录。本实验的第二部分将引导您完成从 ACS 下载示例登录页面的过程,以便您可以对其进行自定义以匹配您网站的风格。
在执行最后一部分之前,深度链接工作正常。意思是:我可以请求一个安全页面,例如 http://localhost/acsdemo/securepage.aspx ACS 会拦截请求,将我重定向到登录页面,然后返回到 http://localhost/acsdemo/securepage.aspx。 , 但现在它只是让我回到默认页面 http://localhost/acsdemo/default.aspx .
从 Azure ACS 下载登录页面后,需要做什么才能让深层链接再次工作?
最佳答案
当您重定向登录时,securepage.aspx 的返回 URL 通常存储在上下文参数中。在 ACS 托管登录页面和自定义可下载页面中,都有 javascript 查询 ACS 以获取身份提供者列表,然后为每个 IP 生成登录链接。 ACS 托管版本的特殊之处在于它还会收集提供给它的 wctx 并自定义每个 IP 登录 url 以保留此上下文。这样 ACS 就知道在身份验证完成后将用户重定向回何处。
然而,自定义可下载登录页面不保留此上下文,这就是您出现此行为的原因,ACS 只是将您重定向到您在 ACS 配置中指定的返回 URL,在本例中为 default.aspx。
但是您可以更改您的自定义登录页面以插入这个缺少的参数。此处的复杂之处在于,此上下文根据协议(protocol)进行不同的通信。对于 LiveID(WS-Federation),传入的 wctx 可以在 liveID 登录链接的传出 wctx 中重新传输,但以盒装形式“cx”。下面是我添加到实现此目的的 CreateIdentityProviderButton() 函数中的一些 javascript。
...
//Creates a stylized link to an identity provider's login page
function CreateIdentityProviderButton(identityProvider) {
// Some code I stole from fellow stackoverflow member for extracting query parameters =)
var urlParams = {};
(function () {
var e,
a = /\+/g, // Regex for replacing addition symbol with a space
r = /([^&=]+)=?([^&]*)/g,
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
q = window.location.search.substring(1);
while (e = r.exec(q))
urlParams[d(e[1])] = d(e[2]);
})();
var cx = "&cx=" + encodeURIComponent(urlParams.wctx);
var idpList = document.getElementById("IdentityProvidersList");
var button = document.createElement("button");
button.setAttribute("name", identityProvider.Name);
button.setAttribute("id", identityProvider.LoginUrl + encodeURIComponent(cx));
...
对于 Yahoo 或 Google (OpenID),此上下文在 openid.return_to 中作为“上下文”查询参数返回。因此,在您的登录页面中,您可以类似地编辑登录链接中的 openid.return_to,如下所示:
... openid.return_to=https://youracstenant.accesscontrol.windows.net:443/v2/openid?context=<value of the wctx extracted from javascript above> ...
您可以根据您在 ACS IdentityProvider.js json 响应中看到的身份提供者名称,将代码编写为登录链接的特殊情况。
关于acs - 从 Azure ACS 下载登录页面后,如何使返回 URL 再次正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9927518/
之前有人问过这个问题,但是当移动到具有相反字节序的平台(在这种情况下从大到小)时,我仍然对如何处理位域结构感到有些困惑。所以如果我有这个: typedef struct { unsigned
我之前问过这个问题here , 但它被标记为重复并已关闭。不幸的是,我被指出的答案不起作用.... 所以,再次: 我可以生成一个像这样的 eCharts4r 仪表 library(echarts4r)
关于 .NET 中对不可为空引用类型的支持存在很多问题。最大的希望是代码契约,但它仅限于对预算有限的人进行运行时检查。 对于代码契约以外的方法,Jon Skeet 写了一篇 blog post几年前,
当我通过将终止标志设置为true来停止线程'srch_slave_thread'时,(srch_slave_thread.terminate)释放线程的线程停止在析构函数的'inherited'行中,
We know that Windows 使用 CR + LF 对作为换行符,Unix(包括 Linux 和 OS X)使用单个 LF,而 MacOS 使用单个 CR。 这是否意味着 C 和 C++
This other SO question询问 WPF 中的自动完成文本框。有几个人已经构建了这些,其中给出的答案之一表明 this codeproject article . 但我还没有找到任何与
这个问题对我来说就像是噩梦的重演。该项目是使用 gpt3 训练聊天机器人,我正在试验嵌入。 我有文档,我正在尝试为不同的部分创建嵌入。根据我的测试,getEmbeddings() 似乎返回了一个值。但
我收到数据读取器初始化错误。我知道这个问题以前已经回答过很多次了,但这些案例似乎不适合我的情况。错误消息开头为“执行读取器:连接属性尚未初始化。” 程序: using System; using Sy
我知道这个问题已被多次询问和回答,但我正在抓狂,因为所提出的解决方案似乎都不起作用。 尽管有一个有效的配置文件,据我所知,它与 bundle 标识符匹配,但我收到了上述错误: 我已按照本网站上各种建议
所以我有一个小问题 这是我的文字 AFTER_2011/03/01 GREATER_2004_NOT 我想要 AFTER 和 GREATER,所以我有以下正则表达式: [A-Z]{2,}\\B 一开始
这个问题对我来说就像是噩梦的重演。该项目是使用 gpt3 训练聊天机器人,我正在试验嵌入。 我有文档,我正在尝试为不同的部分创建嵌入。根据我的测试,getEmbeddings() 似乎返回了一个值。但
我目前正在做具有图形功能的计算器应用程序。然后,我在我的计算器中有这个按钮,并将它连接到我的 Calculator2ViewController 上。此外,我将此按钮连接到另一个名为 GraphVie
昨天,我尝试以一种方式执行此操作...今天我尝试另一种方式,但仍然卡住了。我必须找到一种使用整数除法和取模来做到这一点的方法。这是我的代码,后面是错误消息。 public int evaluateFr
我大致正在处理以下内容: var i; var k = 5; $('document').ready(function () { $('#someElement').click(functio
又是realloc的问题。看来我在之前的很多realloc语句中都没有发现类似的问题。我将不胜感激您的兴趣。 我正在尝试读取格式的文本输入: g:;0,1,0,1,0 。我在源文本文件中有一组这种格式
我不知道为什么下面会给我:*“error LNK2001: unresolved external symbol 'struct Win32Vars_t win32' (?win32@@3UWin32
又是我。在我所有的问题中,我认为这是所有问题中最愚蠢的,但由于疲劳或愚蠢,我也需要一些帮助。然而,最重要的是,我这样做是为了我的一项任务,并且有一个严格的规则 - 我必须使用一个函数调用 char*
在 Ubuntu 14.04.5 上运行 MySql 5.5.53。当从文本文件导入数据时(加载数据 infil $FIL INTO TABLE &c),我收到可怕的提示,因为 secure_file
我在 Stackoverflow 中找到了大量关于如何选择组中第一行和最后一行的示例,但我无法根据需要调整它们。唉,我对 MySQL 的有限了解无济于事。 一些数据(date_time、val1 和
我遇到错误“连接必须有效并再次打开,当我更改我的 sql 查询代码时。任何人都可以帮忙吗??(编辑)在 form1 中我已经连接到数据库,在 form2 中我试图添加查询。 //IN Class1.c
我是一名优秀的程序员,十分优秀!