ADFS 2.0 and jsonp

ADFS 2.0 and jsonp

本文关键字:jsonp and ADFS      更新时间:2023-09-26

我有一个使用被动联合的主网站(ADFS 2.0)这个网站有javascript,可以使用jsonp调用MVC Web API网站。

我正在尝试让这个WebAPI参与单一登录(同一台机器,不同的端口)。然而,被动重定向破坏了jsonp。(STS返回浏览器渲染的自己的脚本,我永远无法重定向到我的响应脚本的真实url)

被动联盟与jsonp-webapi兼容吗?如果没有,如何在没有用户名/密码凭据的情况下使用Active Federation?即,在调用webapi之前,用户将通过主网站进行身份验证,那么我如何利用他们已经登录webapi的事实呢?

被动联合协议在这种情况下不会像您所经历的那样工作。

你有两个选择:

  • 如果你的网站专门使用你的web api,你可以在用户进行身份验证时共享WIF生成的cookie。为此,如果使用不同的网站,则应将WIF配置中的<cookieHandler>部分配置为使用相同的域和路径,并使用FQDN(而不是计算机名),以便浏览器将网站和API标识为同一域。

  • 第二个选项是配置Web API以提取和验证SAML令牌(在身份验证期间生成)。您在这里要做的是保存用于身份验证的令牌(打开WIF配置的<service>元素上的saveBootstrapToken),通过使用claimsIdentity.GetBootrapToken()扩展方法获得它,并将令牌作为HTTP头附加在JavaScript调用上,如"Authorization:bearer…the token…"。在服务器端,您必须获得它并验证令牌(通过程序)。请注意,如果令牌太大,则可能会因为标头长度而在IIS中达到配额。