在 ADFS 中模拟 Azure AD 用户/租户声明

在 ADFS 中模拟 Azure AD 用户/租户声明

我有一个 .Net Web 应用程序,允许用户将他们的帐户与身份提供商(Azure AD、Google 和/或 ADFS)挂钩,以允许单点登录。

在连接他们的帐户(或“入职”,无论......)时,每个提供商都应返回以下值:

  1. 用户唯一 ID(租户的恒定 ID 值对于用户而言永远不会改变(例如,如果他们的姓名发生变化,该值仍然保持不变)
  2. 租户唯一 ID由于人们从多个客户群使用该应用程序,因此我需要为每个客户的 ID 提供商/租户存储一个识别值
  3. 用户名用户的友好名称(例如电子邮件地址),可用于在提供商上显示他们的“名称”(例如,如果使用 Google 或 Azure AD,则这是您的电子邮件)

到目前为止,我已经在 Azure AD 和 Google 中实现了这一点,但在 ADFS 方面却遇到了困难。由于我没有实时 ADFS 服务器,因此我使用虚拟机来查看如何将上述内容设置为声明。

是否可以在 ADFS 中设置依赖方,然后创建三个声明来填充上述内容?

在处理 ADFS 声明规则对话框时,我假设以下内容可能有效,但缺乏经验来判断它是否有效:

  1. 名称 ID - 持久标识符
  2. 不确定 - 也许手动创建值为“CompanyABC_Tenant123”的索赔
  3. 联合网络通信公司

上面的第 2 点可以做到吗?或者,有没有更好的方法来实现我的需求?我注意到,如果使用 Azure AD 访问控制,则上述三项会自动填充,但假设 ID 是在云中而不是在本地创建的。

答案1

首先,使用 objectGUID——参考:ADFS:objectGUID 作为声明

其次,可能有多个域,一个域内有多个 ADFS 场,一个场内有多个 ADFS 实例。因此,理想的静态声明应该是这样的:

域/场/机器名称

但整个农场的索赔规则都是一样的,因此:

域名/农场

第三,是的,使用 UPN。

相关内容