2K12 R2 ADFS 3 – IE通过身份validation失败,第二次login400

我们有一位最近在服务器2K12 R2上部署了ADFS 3.0的客户,作为我们的SaaS产品(我们是SP,我们使用SimpleSAMLPHP)的IDP。 这个客户是我们的第一个ADFS 3.0客户,但是我们有很多客户。 该客户在其域上使用通过IE身份validation,但在域外需要基于表单的身份validation–ADFS 3.0对此很有帮助。 但是,我们遇到了一个困难…

如果他们在与IE浏览器相同的浏览器环境下第二次login我们的应用程序,他们会从ADFS服务器获取HTTP 400,然后再发回给我们。

多一点颜色…我们的应用程序中有一个注销button,它会杀死我们的应用程序中的用户会话,但不会终止与ADFS的会话(但是真的如何通过传递和IE终止它,您的身份是您的域凭据)。 如果他们在退出后回到我们的应用程序,我们会将其发回给他们的IDP进行身份validation。 通常情况下,他们只是送回authentication,每个人都很高兴。

一些事实:

  • 我们有一个没有代理服务器的域名
  • 服务器通过正确的DNS名称在内部和外部路由
  • 即使技术上ADFS 3.0不需要,我们也安装了IIS
  • 我们试图增加详细程度并在ADFS中查看日志,但没有成功
  • 我们可以在IE中通过每个浏览器会话一次性声明login
  • 其他浏览器基于表单的身份validation正常工作

更有意思的是:

  • 我们在我们公司设置ADFS 3.0来尝试重现它,并且在这里工作正常
    • 我们现在在内部运行ADFS 2.0和3.0,一切正常
  • 我们倾倒和比较了通过Powershell的ADFS属性,但没有成功
  • 我们使用Fiddler来捕获工作事务和失败事务,它们几乎完全相同

Microsoft支持:

  • 我们与微软展开了一个支持问题
  • 微软声称我们在尝试重新authentication之前没有发布适当的SLO
  • 我们在login时手动尝试了ADFS的SLO URL,并抛出了400!

基本上,从我的angular度来看,一旦我们login过,ADFS服务器就会抛出一次400,我们再次尝试再次交谈。

有任何想法吗? 提前致谢!

什么是您的SLOurl? 我看到很多SAML民间人士尝试使用请求https://sts.contoso.com/adfs/ls/?wa=wsignout1.0与AD FS注销。 这不是注销SAML应用程序的方式。 这是WSFederation。

您需要将正确构造的samp:logoutrequest发送到/ adfs / ls被动端点。