4

我之前有一个使用 Windows 2012 R2 ADFS 进行身份验证的富客户端,并在此处记录了它。我们正在迁移到 Windows 2016 RTM ADFS(因为 2012 R2 不正确支持 Web Apps/ADAL.js),我正在努力翻译/扩展该配置以使其正常工作。无论我做什么,只要客户端点击 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”);'

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

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

4

1 回答 1

8

好的,我有这个工作。与 Windows 2012 R2 上的 ADFS 相比,还有一些额外的配置。

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

打开 ADFS 管理控制台并在左侧右键单击“应用程序组”和“添加应用程序组...”

中的第一个选项卡

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

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

在第 3 页上,您选择了一个访问控制策略 - 我采用了默认值,而不是“允许所有人”。

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

添加独立 Web api 时的向导第 4 页

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

于 2017-03-24T13:56:33.963 回答