ADFS 3.0和非声明感知应用程序,身份验证问题

时间:2015-04-21 07:47:15

标签: authentication claims-based-identity claims adfs3.0

我们正在尝试联合我们的应用程序,以便我们的客户可以使用各自的公司标识(Ping Identity或其ADFS服务器)获取我们的应用程序。

Web应用程序不具有声明权限,我们正在尝试找到一种联邦它的解决方案,而无需更改代码。

在我的实验室环境之后,我使用Windows Server 2012 R2构建了一个模拟未来场景的ADF​​S 3.0环境:

我们的一方:

  • 1 Active Directory服务器(domainB)
  • 1个IIS8 Web服务器,我们的非声明感知应用程序(Kerberos机制支持的Windows集成身份验证)加入了domainB
  • 1 ADFS 3.0服务器(服务提供商)加入了domainB
  • 1个在domainB上加入的WAP服务器

客户方:

  • 1 Active Directory(domainA)
  • 1 ADFS 3.0服务器(身份提供商)加入了domainA

应用程序用户:

  • 即domainB \ USER1
  • DOMAINA \ USER2

我按照以下步骤构建了我的实验室环境:

  1. 在domainB上安装和配置ADFS 3.0
  2. 在domainB上安装和配置WAP服务器
  3. 在domainB上的WAP服务器上发布ADFS 3.0
  4. 创建一个非声明感知依赖方Trust,将该应用程序指向domainB上的ADFS 3.0
  5. 将未声明的声明发布到domainB上的WAP
  6. 在domainA上安装和配置ADFS 3.0
  7. 在domainB上使用ADFS 3.0信任域B上的ADFS 3.0
  8. 在每个联邦服务器上编辑声明规则
  9. “domainB \ user1”访问应用程序没有问题,在我的WAP服务器中有以下事件:

    Web应用程序代理成功代表用户检索了Kerberos票证。

    Web应用程序代理收到带有有效边缘令牌的HTTP请求。

    “domainA \ user2”无法访问并在屏幕上显示服务器错误,并且在WAP事件查看器中存在以下错误:

    警告:EventID 13019 由于以下常规API错误,Web应用程序代理无法代表用户检索Kerberos票证:用户名或密码不正确。  (0x8007052e)。

    错误:EventID 12027 Web应用程序代理在处理请求时遇到意外错误。 错误:用户名或密码不正确。  (0x8007052e)。

    似乎是Kerberos身份验证的问题,但domainB \ user1访问应用程序没有问题。

    需要了解:

    • 问题在哪里?
    • 只有Web应用程序服务器的同一域的用户成员才支持访问非声明感知应用程序

    我花了很多天才找出原因。 欣赏这里的任何方向。 感谢

2 个答案:

答案 0 :(得分:0)

鉴于"非索赔感知"应用程序使WAP + ADFS使用WIA,而WIA需要Kerberos,您需要在WAP-B上为" domainA \ user2"发出Kerberos令牌,这反过来又需要在domainA和domainB之间设置域/林信任( domainB至少应该信任domainA。我没有看到域级信任,只有ADFS级别,因此Kerberos域domainB说"未知用户域A \ user2"。检查在domainA和domainB之间启用信任是否可以解决问题。

答案 1 :(得分:0)

对于域A中要访问该应用程序的用户,您需要域B中的Kerberos影子主体。这与通过天蓝色的应用程序代理访问天蓝色的B2B来宾用户的情况类似。这是一个通过Azure(https://docs.microsoft.com/en-us/azure/active-directory/b2b/hybrid-cloud-to-on-premises)进行同步设置的演练。对于您的情况,这将是相似的,只是您需要从用户目录中复制用户。