4

我们正在尝试联合我们的应用程序,以便我们的客户可以使用他们各自的公司身份(Ping 身份或他们的 ADFS 服务器)访问我们的应用程序。

Web 应用程序是非声明感知的,我们正在尝试找到一种解决方案来联合它而不更改代码。

我使用 windows server 2012 R2 构建了一个 ADFS 3.0 环境,模拟未来场景,遵循我的实验室环境:

我们这边:

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

客户端:

  • 1 个活动目录(域 A)
  • 1 个 ADFS 3.0 服务器(身份提供程序)加入 domainA

应用用户:

  • 域B\user1
  • 域A\用户2

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

  1. 在 domainB 上安装和配置 ADFS 3.0
  2. domainB上WAP服务器的安装和配置
  3. 在 domainB 上的 WAP 服务器上发布 ADFS 3.0
  4. 创建非声明感知依赖方信任指向域 B 上 ADFS 3.0 上的应用程序
  5. 将非声明感知发布到 domainB 上的 WAP
  6. 在 domainA 上安装和配置 ADFS 3.0
  7. 信任 domainB 上的 ADFS 3.0 和 domainB 上的 ADFS 3.0
  8. 在每个联合服务器上编辑声明规则

“domainB\user1”访问应用程序没有问题,在我的WAP服务器中有以下事件:

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

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

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

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

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

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

需要了解:

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

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

4

2 回答 2

0

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

于 2017-06-28T11:32:45.253 回答
0

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

于 2020-04-27T17:05:50.810 回答