Javascript ADFS2.0和jsonp

Javascript ADFS2.0和jsonp,javascript,ajax,jsonp,adfs2.0,adfs,Javascript,Ajax,Jsonp,Adfs2.0,Adfs,我有一个使用被动联合(ADFS 2.0)的主网站 这个网站有javascript,可以使用jsonp调用MVCWebAPI站点 我试图让这个WebAPI参与单点登录(同一台机器,不同的端口)。然而,被动重定向破坏了jsonp。(STS返回浏览器呈现的自己的脚本,我永远无法重定向到响应脚本的真实url) 被动联合与jsonp webapi兼容吗? 如果没有,如何在没有用户名/密码凭据的情况下使用活动联盟? i、 e.在调用webapi之前,用户将通过主网站进行身份验证,因此我如何利用他们已经在we

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

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

被动联合与jsonp webapi兼容吗? 如果没有,如何在没有用户名/密码凭据的情况下使用活动联盟?
i、 e.在调用webapi之前,用户将通过主网站进行身份验证,因此我如何利用他们已经在webapi中登录的事实?

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

您有两个选择:

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

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


被动联合协议在您遇到的这种情况下不起作用

您有两个选择:

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

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


谢谢!cookies设置是我需要的谢谢!cookies设置是我需要的