gpt4 book ai didi

active-directory - ADFS + OpenID Connect 电子邮件声明和外部 ADFS

转载 作者:行者123 更新时间:2023-12-04 08:30:26 79 4
gpt4 key购买 nike

我在 Windows Server 2016 上使用 OpenID Connect 设置 ADFS 时遇到困难。

我已经设置了用于测试的 AD 并且我可以成功进行身份验证,但是电子邮件声明不在 id token 中。

此外,我在 Claims Provider 信任中设置了一个外部 ADFS。它显示为一个选项,但是在登录时出现错误:

    MSIS9642: The request cannot be completed because an id token is required but the server was unable to construct an id token for the current user.

有人对如何解决这个问题有建议吗?

最佳答案

MSIS9642 的根本原因是 ADFS 2016 中新的 OpenID Connect 应用程序组功能需要向您的应用程序颁发访问 token 。此 token 必须包含用户身份。为了发布 token ​​,子系统必须了解 入站 声明中的哪个 声明用于 唯一标识 用户。

名为 AnchorClaimType 的新属性已添加到 Claim Provider Trust 模型中。

首次安装 ADFS 时,它会为 AD AUTHORITY 注册一个内置的 Claim Provider Trust,并将 AnchorClaimType 的值设置为

foo://schemas.microsoft.com/ws/2008/06/identity/claims/ windowsaccountname

您可以通过使用 powershell 命令 get-adfsclaimsprovidertrust 来查看这一点。

这就是 OpenID 在针对 Active Directory 进行身份验证时起作用的原因。

当您创建新的 Claim Provider Trust 时,系统不会设置 AnchorClaimType 。 OpenID 系统无法发出 token ,因为它不知道哪个入站声明构成了唯一的用户身份。这就是 OpenID 在针对外部声明提供者信任进行身份验证时不起作用的原因。

为了解决这个问题,您需要采取一些措施:

a) 验证您正在运行 Windows Server 2016 RTM 不幸的是,CTP 中不存在用于设置 AnchorClaimType 的 powershell 属性,并且无法使用 UI 设置该属性。

b) 从代表用户身份的入站 token 中选择一个声明并标识声明类型。在我们的例子中,我们与 Azure Active Directory 联合并选择 名称 ,类型为 foo://schemas.xmlsoap.org/ws/2005/05/identity/claims/ name

c) 将 Claim Provider Trust 的 AnchorTypeClaim 设置为使用 powershell 选择的类型

set-adfsclaimsprovidertrust -targetidentifier 标识符 -AnchorClaimType http://schemas.xmlsoap.org/ws/2005/05/identity/claims/ 名称

(从 powershell get-adfsclaimsprovidertrust 获取 标识符 )

d) 创建至少一个通过主要输入声明值的入站规则,在我们的例子中为 Name

希望这可以帮助

关于active-directory - ADFS + OpenID Connect 电子邮件声明和外部 ADFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295260/

79 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com