如何为富客户端或 Web 应用配置对 Windows 2016 RTM ADFS 的客户端和依赖方信任?

How do I configure client and relying party trust on Windows 2016 RTM ADFS for a rich client or web app?

我之前有一个富客户端使用 Windows 2012 R2 ADFS 进行身份验证并将其记录在案 。我们正在转向 Windows 2016 RTM ADFS(因为 2012 R2 不支持 Web Apps/ADAL.js 正确)并且我正在努力 translate/extend 该配置工作。无论我做什么,我都会在客户端点击 ADFS 时收到错误消息:

 MSIS9321: Received invalid OAuth request. The client 'LL957F23-D6C5-4D52-8A40-4F26B3408888' is forbidden to access the resource '<relying-party-url>' 

我发现了 ADFS 2016 预览版对这个问题的几个回应,并且都提出了相同的解决方案 - 使用 powershell 设置依赖方并指定以下选项:

-IssuanceAuthorizationRules '=> issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = “true”);'

但是,我采用了这些解决方案显示的确切代码,并尝试将访问控制策略手动设置为 "Permit Everyone"(默认值),或者使用 -IssuanceAuthorizationRules 设置,但都没有解决这个问题。

是否有人对此错误有其他解决方案或在 Win 2016 RTM 上使用过 ADFS?

好的,我已经开始工作了。与 Windows 2012 R2 上的 ADFS 相比,有一些额外的配置。

在 Windows Server 2016 ADFS 上,我们需要设置一个应用程序组,该应用程序组 link 是他们希望使用的服务(依赖方)的一个或多个客户端。

打开 ADFS 管理控制台,在左侧右键单击 "Application Groups" 和 "Add Application Group..."

选择一个客户端-服务器模板允许您在向导的一次传递中设置 linked 客户端和服务器。如果像我一样,您已经定义了客户端应用程序,您可以稍后 select 独立 Web Api 和 link 现有客户端。

在这种情况下,向导的第 2 页只需要 Web Api 标识符 - 目标资源 URL 或其他字符串标识符(它在 ADFS 上的所有依赖方中必须是唯一的)。

在第 3 页上,您选择了一个访问控制策略 - 我选择了 "Permit Everyone" 的默认值。

在第 4 页,您可以在顶部面板中添加需要令牌才能访问网络的现有客户端 API,并指定允许的范围:例如 OpenID Connect 授权或请求的能力刷新令牌。

就是这样。这为我消除了 The client is forbidden to access the resource 错误。我不必使用其他帖子中描述的自定义 -IssuanceAuthorizationRules