示例:使用 AD FS 建立 SAML/WS-Fed IdP 联合以实现 B2B 协作

适用于:带白色勾号的绿色圆圈。 员工租户 带灰色 X 号的白色圆圈。 外部租户(了解详细信息

注意

Microsoft Entra 外部 ID 中的“直接联合”现在称为“SAML/WS-Fed 标识提供者 (IdP) 联合”。

本文介绍如何使用 Active Directory 联合身份验证服务 (AD FS) 作为 SAML 2.0 或 WS-Fed IdP 来设置 SAML/WS-Fed IdP 联合。 若要支持联合,必须在 IdP 中配置特定属性和声明。 为了说明如何为联合配置 IdP,我们使用 Active Directory 联合身份验证服务 (AD FS) 作为示例。 我们会演示如何将 AD FS 设置为 SAML IdP 以及如何设置为 WS-Fed IdP。

注意

本文介绍如何为 SAML 和 WS-Fed 设置 AD FS,以便进行说明。 对于 IdP 为 AD FS 的联合集成,建议使用 WS-Fed 作为协议。

为 SAML 2.0 联合配置 AD FS

可以将 Microsoft Entra ID B2B 配置为与使用 SAML 协议的 IdP 联合,具体要求如下所列。 为了说明 SAML 配置步骤,本节说明如何为 SAML 2.0 设置 AD FS。

若要建立联合,必须从 IdP 的 SAML 2.0 响应中接收以下属性。 可以通过链接到联机安全令牌服务 XML 文件或手动输入来配置这些属性。 创建测试 AD FS 实例中的步骤 12 说明了如何查找 AD FS 终结点或如何生成元数据 URL,例如 https://fs.iga.azure-test.net/federationmetadata/2007-06/federationmetadata.xml

属性
AssertionConsumerService https://login.microsoftonline.com/login.srf
读者 urn:federation:MicrosoftOnline
颁发者 合作伙伴 IdP 的颁发者 URI,例如 http://www.example.com/exk10l6w90DHM0yi...

以下声明需要在由 IdP 颁发的 SAML 2.0 令牌中进行配置:

Attribute
NameID 格式 urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
emailaddress http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

下一节说明如何用 AD FS 作为 SAML 2.0 IdP 的示例来配置所需的属性和声明。

开始之前

在开始此过程前,必须将 AD FS 服务器设置完毕且保证其正常运行。

添加声明说明

  1. 在 AD FS 服务器上,选择“工具”>“AD FS 管理”。

  2. 在导航窗格中,选择“服务”>“声明说明”。

  3. 在“操作”下,选择“添加声明说明”。

  4. 在“添加声明说明”窗口中,指定以下值:

    • “显示名称”:永久性标识符
    • “声明标识符”:urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
    • 选择复选框“在联合元数据中发布此声明说明,将其作为此联合身份验证服务可以接受的声明类型”。
    • 选择复选框“在联合元数据中发布此声明说明,将其作为此联合身份验证服务可以发送的声明类型”。
  5. 选择“确定”。

添加信赖方信任

  1. 在 AD FS 服务器上,转到“工具”>“AD FS 管理”。

  2. 在导航窗格中,选择“信任方信任”。

  3. 在“操作”下,选择“添加信赖方信任”。

  4. 在“添加信赖方信任”向导中,选择“声明感知”,然后选择“开始”。

  5. 在“选择数据源”部分,选择“导入有关在线或在本地网络上发布的信赖方的数据”的复选框。 指定此联合元数据 URL:https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml。 选择“下一步”。

  6. 将其他设置保留为其默认选项。 接着选择“下一步”,最后选择“关闭”以关闭向导。

  7. 在“AD FS 管理”中的“信赖方信任”下,右键单击刚刚创建的信赖方信任并选择“属性”。

  8. 在“监视”中,取消选中“监视信赖方”框。

  9. 在“标识符”选项卡中,使用服务合作伙伴的 Microsoft Entra 租户的租户 ID 在“信赖方标识符”文本框中输入 https://login.microsoftonline.com/<tenant ID>/。 选择 添加

    注意

    请确保在租户 ID 后添加斜杠 (/),例如:https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/

  10. 选择“确定”。

创建声明规则

  1. 右键单击创建的信赖方信任,然后选择“编辑声明颁发策略”。

  2. 在“编辑声明规则”向导中,单击“添加规则”。

  3. 在“声明规则模板”中,选择“以声明方式发送 LDAP 特性”。

  4. 在“配置声明规则”中,指定以下值:

    • “声明规则名称”:电子邮件声明规则
    • “属性存储”:Active Directory 域服务
    • “LDAP 属性”:电子邮件地址
    • “传出声明类型”:电子邮件地址
  5. 选择“完成”。

  6. 选择“添加规则”。

  7. 在“声明规则模板”中,选择“转换传入声明”,然后选择“下一步”。

  8. 在“配置声明规则”中,指定以下值:

    • “声明规则名称”:电子邮件转换规则
    • “传入声明类型”:电子邮件地址
    • “传出声明类型”:名称 ID
    • “传出名称 ID 格式”:永久性标识符
    • 选择“传递所有声明值”。
  9. 选择完成

  10. “编辑声明规则”窗格将显示新规则。 选择应用

  11. 选择“确定”。 现在,AD FS 服务器已配置为使用 SAML 2.0 协议的联合。

为 WS-Fed 联合配置 AD FS

可以将 Microsoft Entra B2B 配置为与使用 WS-Fed 协议的 IdP 联合,具体要求如下。 目前,已通过 Microsoft Entra 外部 ID 对两个 WS-Fed 提供者的兼容性进行测试,包括 AD FS 和 Shibboleth。 在这里,我们会使用 Active Directory 联合身份验证服务 (AD FS) 作为 WS-Fed IdP 的示例。 有关通过 Microsoft Entra 外部 ID 在 WS-Fed 兼容的提供者之间建立信赖方信任的详细信息,请下载 Microsoft Entra 标识提供者兼容性文档。

若要建立联合,必须从 IdP 的 WS-Fed 消息中接收以下属性。 可以通过链接到联机安全令牌服务 XML 文件或手动输入来配置这些属性。 创建测试 AD FS 实例中的步骤 12 说明了如何查找 AD FS 终结点或如何生成元数据 URL,例如 https://fs.iga.azure-test.net/federationmetadata/2007-06/federationmetadata.xml

属性
PassiveRequestorEndpoint https://login.microsoftonline.com/login.srf
读者 urn:federation:MicrosoftOnline
颁发者 合作伙伴 IdP 的颁发者 URI,例如 http://www.example.com/exk10l6w90DHM0yi...

IdP 颁发的 WS-Fed 令牌的必需声明:

Attribute
ImmutableID http://schemas.microsoft.com/LiveID/Federation/2008/05/ImmutableID
emailaddress http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

下一节说明如何用 AD FS 作为 WS-Fed IdP 的示例来配置所需的属性和声明。

开始之前

在开始此过程前,必须将 AD FS 服务器设置完毕且保证其正常运行。

添加信赖方信任

  1. 在 AD FS 服务器上,转到“工具”>“AD FS 管理”。

  2. 在导航窗格中,选择“信任关系”>“信赖方信任”。

  3. 在“操作”下,选择“添加信赖方信任”。

  4. 在“添加信赖方信任”向导中,选择“声明感知”,然后选择“开始”。

  5. 在“选择数据源”部分,选择“手动输入有关依赖方的数据”,然后选择“下一步”。

  6. 在“指定显示名称”页面中,在“显示名称”中键入名称。 可以选择在“备注”部分输入此信赖方信任的说明。 选择“下一页”。

  7. (可选)在“配置证书”页面中,如果有令牌加密证书,请选择“浏览”以找到证书文件。 选择“下一页”。

  8. 在“配置 URL”页面,选择“启用对 WS 联合身份验证被动协议的支持”复选框。 在“信赖方 WS 联合身份验证被动协议 URL”下,输入以下 URL:https://login.microsoftonline.com/login.srf

  9. 选择“下一步”。

  10. 在“配置标识符”页面中,输入以下 URL 并选择“添加”。 在第二个 URL 中,输入服务合作伙伴的 Microsoft Entra 租户的租户 ID。

    • urn:federation:MicrosoftOnline
    • https://login.microsoftonline.com/<tenant ID>/

    注意

    请确保在租户 ID 后添加斜杠 (/),例如:https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/

  11. 选择“下一步”。

  12. 在“选择访问控制策略”页面选择一个策略,然后选择“下一步”。

  13. 在“准备添加信任”页面,查看设置,然后选择“下一步”来保存信赖方信任信息。

  14. 在“完成”页面,选择“关闭”。 选择信赖方信任,并选择“编辑声明颁发策略”。

创建声明规则

  1. 选择刚创建的信赖方信任,然后选择“编辑声明颁发策略”。

  2. 选择“添加规则”。

  3. 选择“将 LDAP 属性作为声明发送”,然后选择“下一步”。

  4. 在“配置声明规则”中,指定以下值:

    • “声明规则名称”:电子邮件声明规则
    • “属性存储”:Active Directory 域服务
    • “LDAP 属性”:电子邮件地址
    • “传出声明类型”:电子邮件地址
  5. 选择“完成”。

  6. 同样,在“编辑声明规则”向导中,单击“添加规则”。

  7. 选择“使用自定义规则发送声明”,然后选择“下一步”。

  8. 在“配置声明规则”中,指定以下值:

    • 声明规则名称:颁发不可变 ID
    • “自定义规则”:c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/LiveID/Federation/2008/05/ImmutableID"), query = "samAccountName={0};objectGUID;{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);
  9. 选择“完成”。

  10. 选择“确定”。 现在,AD FS 服务器已配置为使用 WS-Fed 的联合。

后续步骤

接下来,你将在 Azure 门户中或使用 Microsoft Graph API 在 Microsoft Entra 外部 ID 中配置 SAML/WS-Fed IdP 联合身份验证