我们正在尝试联合我们的应用程序,以便我们的客户可以使用他们各自的公司身份(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
我按照以下步骤构建了我的实验室环境:
- 在 domainB 上安装和配置 ADFS 3.0
- domainB上WAP服务器的安装和配置
- 在 domainB 上的 WAP 服务器上发布 ADFS 3.0
- 创建非声明感知依赖方信任指向域 B 上 ADFS 3.0 上的应用程序
- 将非声明感知发布到 domainB 上的 WAP
- 在 domainA 上安装和配置 ADFS 3.0
- 信任 domainB 上的 ADFS 3.0 和 domainB 上的 ADFS 3.0
- 在每个联合服务器上编辑声明规则
“domainB\user1”访问应用程序没有问题,在我的WAP服务器中有以下事件:
Web 应用程序代理代表用户成功检索了 Kerberos 票证。
Web 应用程序代理收到带有有效边缘令牌的 HTTP 请求。
“domainA\user2”无法访问并在屏幕上出现服务器错误,在 WAP 事件查看器中出现以下错误:
警告:EventID 13019 Web 应用程序代理无法代表用户检索 Kerberos 票证,因为以下一般 API 错误:用户名或密码不正确。(0x8007052e)。
错误:EventID 12027 Web 应用程序代理在处理请求时遇到意外错误。错误:用户名或密码不正确。(0x8007052e)。
似乎是 Kerberos 身份验证的问题,但 domainB\user1 访问应用程序没有问题。
需要了解:
- 问题出在哪里?
- 只有 Web 应用程序服务器的同一域的用户成员支持访问非声明感知应用程序
我花了很多天来找出原因。欣赏这里的任何方向。谢谢