![在 ADFS 中模拟 Azure AD 用户/租户声明](https://linux22.com/image/672800/%E5%9C%A8%20ADFS%20%E4%B8%AD%E6%A8%A1%E6%8B%9F%20Azure%20AD%20%E7%94%A8%E6%88%B7%2F%E7%A7%9F%E6%88%B7%E5%A3%B0%E6%98%8E.png)
我有一个 .Net Web 应用程序,允许用户将他们的帐户与身份提供商(Azure AD、Google 和/或 ADFS)挂钩,以允许单点登录。
在连接他们的帐户(或“入职”,无论......)时,每个提供商都应返回以下值:
- 用户唯一 ID(租户的恒定 ID 值对于用户而言永远不会改变(例如,如果他们的姓名发生变化,该值仍然保持不变)
- 租户唯一 ID由于人们从多个客户群使用该应用程序,因此我需要为每个客户的 ID 提供商/租户存储一个识别值
- 用户名用户的友好名称(例如电子邮件地址),可用于在提供商上显示他们的“名称”(例如,如果使用 Google 或 Azure AD,则这是您的电子邮件)
到目前为止,我已经在 Azure AD 和 Google 中实现了这一点,但在 ADFS 方面却遇到了困难。由于我没有实时 ADFS 服务器,因此我使用虚拟机来查看如何将上述内容设置为声明。
是否可以在 ADFS 中设置依赖方,然后创建三个声明来填充上述内容?
在处理 ADFS 声明规则对话框时,我假设以下内容可能有效,但缺乏经验来判断它是否有效:
- 名称 ID - 持久标识符
- 不确定 - 也许手动创建值为“CompanyABC_Tenant123”的索赔
- 联合网络通信公司
上面的第 2 点可以做到吗?或者,有没有更好的方法来实现我的需求?我注意到,如果使用 Azure AD 访问控制,则上述三项会自动填充,但假设 ID 是在云中而不是在本地创建的。
答案1
首先,使用 objectGUID——参考:ADFS:objectGUID 作为声明。
其次,可能有多个域,一个域内有多个 ADFS 场,一个场内有多个 ADFS 实例。因此,理想的静态声明应该是这样的:
域/场/机器名称
但整个农场的索赔规则都是一样的,因此:
域名/农场
第三,是的,使用 UPN。