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

2023-12-01

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

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

此外,我还在声明提供者信任中设置了外部 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.

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


根本原因是MSIS9642ADFS 2016 中的新 OpenID Connect 应用程序组功能需要向您的应用程序颁发访问令牌。该令牌必须包含用户身份。为了发行令牌,子系统必须理解which索赔在inbound索赔用于唯一标识用户。

一个新的属性称为锚声明类型已添加到声明提供者信任模型中。

首次安装 ADFS 时,它会为 AD AUTHORITY 注册内置的声明提供者信任,并设置该值锚声明类型 to

foo://schemas.microsoft.com/ws/2008/06/identity/claims/Windows 帐户名

您可以使用 powershell 命令看到这一点获取 adfsclaimsprovidertrust.

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

当您创建新的声明提供者信任时,系统不会设置锚声明类型。 OpenID 系统无法颁发令牌,因为它不知道哪个入站声明构成唯一的用户身份。这就是为什么 OpenID 在针对外部声明提供者信任进行身份验证时不起作用的原因。

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

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

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

c) 设置锚类型声明将声明提供者信任为使用 powershell 选择的类型

设置-adfsclaimsprovidertrust-targetidentifier标识符-锚声明类型http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

(get 标识符从 powershell get-adfsclaimsprovidertrust)

d) 创建至少一个传入主要输入声明值的入站规则,在我们的示例中为名称

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ADFS + OpenID Connect 电子邮件声明和外部 ADFS 的相关文章

  • 将对象类定义导入到 Active Directory (AD LDS)

    我在将对象类定义从 OpenDS 迁移到 Active Directory 时陷入困境 我已经成功迁移了some定义 并且可以使用我的 Java 应用程序读取 写入 AD 但现在我陷入困境 在我的 OpenDS 模式描述中 我有这样的内容
  • 限制 ADFS 2.0 使用特定 OU 而不是域级别访问

    考虑以下示例场景 我有一个用于生产 测试 和开发的单个 Active Directory 域 每个域在 OU 级别分开 我想在测试 OU 级别安装 ADFS 并且不希望在测试 OU ADFS 上经过身份验证的用户能够访问 读取和写入 其他
  • 如何可靠地检查工作站上当前用户的 Windows 域 ID

    我正在使用 C 和 Net Framework 4 我正在寻找一种万无一失的方法来获取当前登录的 Windows 用户的登录 ID 该方法不易被假冒或黑客攻击 我正在以以下形式查找此内容 域名 用户名 例如某个域 JohnDoe 目前我拥有
  • AllowAnonymous 不适用于 Azure 广告身份验证

    我有一个 Asp net MVC 应用程序 在其中使用 Azure AD 身份验证来对用户进行身份验证 我想允许用户无需登录即可访问某些 api 控制器 我尝试将 AllowAnonymous 属性放在控制器顶部以跳过这些控制器进行身份验证
  • 如何使用 Spring 和 Active Directory 实现单点登录

    我有一个基于 Spring 的 Web 应用程序 我想在其上实现单点登录解决方案 基本流程是 1 用户登录 Windows 工作站 台式电脑 根据组织的 Active Directory 进行身份验证 2 用户打开浏览器并导航到 Sprin
  • 解码 Base64urlUInt 编码值

    我通常想做的是验证id token从 OpenID Connect 提供商 例如 Google 获得的值 令牌使用 RSA 算法进行签名 公钥从发现 https openid net specs openid connect discove
  • Azure AAD - 受众无效

    我创建了一个使用 azure Active Directory 保护的 Web api 我现在需要对此进行测试并尝试将 fiddler 与授权标头一起使用 我正在尝试使用以下代码生成令牌 Target obj Target cmbTarge
  • Windows Server 2012 R2 上通过 SSL 的 AD LDS

    我正在尝试将我的 AD LDS 实例配置为通过 SSL 运行 以便我可以使用我的应用程序从另一台计算机连接到它并执行密码更改操作 我安装了证书颁发机构来创建一个服务器证书 我可以在我的 AD LDS 实例上使用该证书 我将证书添加到 AD
  • 如何在广告中对用户进行递归搜索,无论该用户是在组还是子组中?

    您好 我在 ASP NET 应用程序中使用 Active Directory 和 C 如果用户位于组中或子组中 我希望得到一个 bool 值 我写了一个方法来获取用户是否在组中但不在这个子组中 我如何在我的方法中进行递归搜索 这是我的代码
  • Get-AdUser,其中邮件不为空

    我正在尝试获取 AD 中拥有电子邮件 邮件属性 的所有用户的列表 我有这个命令 Get AdUser filter Properties mail Select SAMAccountName mail Export CSV Path use
  • 0x80005000 UserPrincipal.GetGroups 上的未知错误,OU 中包含特殊字符

    我正在尝试使用 UserPrincipal 的 GetGroups 方法 如果用户帐户位于包含正斜杠的 OU 中 则对 GetGroups 的调用将失败并出现 COM 未知错误 0x80005000 刚刚找到用户帐户 我可以访问其他属性 如
  • Azure Active Directory 组/角色

    我试图弄清楚如何从 Web 门户创建 Windows Azure Active Directory 组和 或角色 我在这里遗漏了一些明显的东西吗 我可以创建用户 并将他们分配给 2 个内置角色 但如何创建新角色 或团体 诚然 我还没有尝试过
  • 如何从 .Net Core MVC 中的 OpenIdConnect 令牌响应中提取状态参数

    我们使用 Azure b2c 来处理 net core MVC 站点上的登录 我们想使用可选的state参数来保存对站点的初始请求之间的某些数据 值 该值可能位于查询字符串参数中 然后将其发送到 b2c 进行登录 并成功登录返回到站点 Op
  • authContext.AcquireTokenSilentAsync 抛出错误

    我参考了this https github com Azure Samples active directory dotnet graphapi web git 项目 该项目具有用于连接并获取有关用户配置文件的信息的代码 在运行该项目时 我
  • 将 WebApp 授权给 ADFS 以访问 Dynamics CRM Web API

    我有一个 Web 应用程序需要与 Dynamics CRM 365 Web API 通信 Dynamics CRM 配置为 ADFS 上的依赖方 服务器是 Windows Server 2016 一切都在本地 而不是在 Azure 上 我为
  • 从所有通讯组中删除所有前雇员

    因此 今天我被分配的任务是从所有 DL 中删除域中的所有前员工 他们在 AD 中拥有自己的文件夹 有没有什么方法可以快速做到这一点 或者至少比单独检查每个并转到 gt 的成员删除所有更快 Thanks 编辑以添加更多信息 有 822 个用户
  • 如何在 access_token 中添加角色声明,目前它是在 id_token 中?

    我正在使用 PKCE 跟踪身份验证代码流 我的身份提供程序是 Azure Active Directory 我从应用程序注册创建了一个应用程序 客户端应用程序 在清单中 我添加了如下所示的 appRoles appRoles allowed
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 如何将 Integer8 值转换为 DateTime?

    如何将 Integer8 类型值转换为 DateTime 类型值 特别是 我正在尝试获得帐户过期采用人类可读形式的 Active Directory 用户属性 SearchResult GetDirectoryEntry Propertie
  • 带有 OpenId 提供程序的 Java Spring 安全性

    我有一个 spring MVC 应用程序 另一个客户端应用程序想要使用 open id connect 访问我的 spring 应用程序 如何在服务器端实现开放ID提供商 请帮忙 MITREid 连接 OpenID Connect Java

随机推荐

  • 如何将 gzipped rdf 文件加载到 rdf4j 存储库?

    我想将 gzipped rdf 文件加载到org eclipse rdf4j repository Repository 上传期间 必须将状态消息记录到控制台 我的 rdf 文件的未压缩数据大小约为 1GB 压缩数据大小约为 50MB 实际
  • 如何判断 Intent.createChooser 选择了哪个应用程序?

    Code Intent launchIntent new Intent Intent ACTION MAIN launchIntent addCategory Intent CATEGORY HOME Intent chooser Inte
  • 如何克隆继承的对象?

    我有一个Tile使用此方法的类 public object Clone return MemberwiseClone 还有另一个班级Checker继承自Tile 我也有一个Board类是一个List
  • java中如何检测文件系统已更改

    我想知道如何在java中有效地实现文件系统更改 假设我在文件夹中有一个文件并修改该文件 我希望尽快得到 java 的有关此更改的通知 如果可能的话 不要频繁轮询 因为我想我可以打电话java io file lastModified每隔几秒
  • 管道缓冲区大小是 4k 还是 64k?

    我在多个地方读到管道的默认缓冲区大小是 4kB 例如 here 和我的ulimit a倾向于证实这一说法 ulimit a core file size blocks c 0 data seg size kbytes d unlimited
  • 通过powershell安装docker时出错

    在 Windows Server 2016 上安装 docker 时出现此错误 有什么想法吗 PS C Users Administrator gt Install Package Name docker ProviderName Dock
  • Boost C++ - 寻找精神符号表

    在 Boost Spirit 中如果我有符号表 struct Foo boost spirit qi symbols
  • 在 vsts 中下载构建工件无法获取特定构建定义的最新构建

    我正在使用 VSTS 中的下载工件插件来使用当前构建定义获取不同构建定义的特定工件 我无法将工件下载到本地代理 我安装了私人代理 下面抛出错误 12 01 2018 下午 01 30 Shwetha Rattihalli 2018 01 1
  • '?' aria-label='DML 中是否有 C++ 的等效项:'template '?'> DML 中是否有 C++ 的等效项:'template '?

    对于这个模板 是否可以参数化uint32类型 template test t saved uint32 data 我尝试使用param mytype uint32 但没有成功 是否可以采用其他方式 DML 没有对泛型的内置支持 但是您can
  • 如何禁用 IntelliJ IDEA 中模块的某些检查?

    在 IntelliJ IDEA 中 我可以禁用对类 方法或其他单元的某些检查 我的项目中有一个模块 它是一个库 我不是唯一的使用者 我没有使用库中的所有方法 因此大量方法被标记为 未使用 这些都是误报 我想单独禁用此模块的这些检查 理想情况
  • 遗传算法中的适应度函数设计

    我需要求解联立线性方程 具有 7 个未知数的 5 个方程 即欠定问题 其中变量在很大范围内变化 0 1 00 000 有人可以建议我应该使用什么健身功能吗 我猜你指的是一个由 5 个线性方程组和 7 个变量组成的系统 这张纸似乎显示了您正在
  • 如何将数组传递给匿名函数?

    我目前在 Powershell 中使用匿名函数 我注意到在从系统值类型 to 系统对象 举个例子 f param InputArray Write Host Arr Type During Call InputArray GetType F
  • namapeace 中缺少 UWP 和 FullTrustProcessLauncher

    我正在尝试使用 UWP 应用程序启动 powershell 所有用户都可以执行的一些轻量级命令 命令FullTrustProcessLauncher 问题是我发现这个名字在当前上下文中不存在 我的清单很大程度上是默认的 所以它看起来像
  • 按 ID 和日期合并行

    我是 R 新手 我一直在寻找如何解决以下问题 我有一个 df 看起来像 id 日期 OB1 OB2 OB31 2017 01 01 1 0 02 2006 01 05 1 0 02 2007 04 19 0 1 03 2015 02 23
  • SSIS 中的 TFS 集成

    我有几个SSIS使用开发的包VS2013 NET 4 5 Framework 在一种解决方案中 很少有使用开发的软件包VS2012 NET 4 0 Framework 在另一个解决方案中 我想将这两种解决方案与TFS 目前 我已经集成了VS
  • 无法跟踪实体类型的实例,因为跟踪了具有相同键值的另一个实例[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我在 asp net core 2 0 中使用通用存储库模式 它无法处置存储库对象 当我要更新条目时 它已成功更新一次 但当我尝试更新更多时 它会抛出以下异常 无法跟踪实体类型 Compa
  • 如何使用函数返回两列

    我想用我的 SQL 函数返回 2 个值 CREATE OR REPLACE FUNCTION get avg prices RETURNS table avg sale price decimal avg rent price decima
  • 即使在 .NET 中使用 SQLParameter 也存在 SQL 注入示例?

    我听说当对 SQL Server 使用 ADO NET SQLParameter 参数化查询 时 仍然可以进行 SQL 注入 我正在寻找 C VB 代码中的真实示例作为证据 编辑 我正在寻找具体的工作示例 没有介绍 sql 注入或如何防止它
  • 使用自定义着色器渲染“硬”边缘

    我想重现使用创建的效果THREE EdgesHelper 在 硬 对象边缘上绘制边界 但使用自定义着色器而不是添加单独的着色器THREE Line目的 本质上我想做的事情这个演示 但仅适用于 硬 边界 例如边界不在两个共面之间 方法 应用类
  • ADFS + OpenID Connect 电子邮件声明和外部 ADFS

    我在 Windows Server 2016 上使用 OpenID Connect 设置 ADFS 时遇到困难 我已经设置 AD 进行测试 并且可以成功进行身份验证 但是电子邮件声明不在 id 令牌中 此外 我还在声明提供者信任中设置了外部