mcpField
E
entra-external-id

entra-external-id

github.com/vinayaklatthe安全17844 次安装19 周前更新
代码仓库

关于 entra-external-id

Microsoft Entra External ID 配置技能,面向需要管理客户身份或合作伙伴访问的团队。它区分客户身份场景与员工租户中的 B2B 协作,并介绍身份验证、条件访问和迁移规划。

主要功能

  1. 01规划客户身份租户与工作租户
  2. 02配置注册、登录及身份提供方
  3. 03设置自定义身份验证扩展
  4. 04管理合作伙伴跨租户访问
  5. 05规划 Azure AD B2C 迁移

适用场景

  1. 01为面向客户的应用配置注册和登录
  2. 02将 Azure AD B2C 用户迁移到 External ID
  3. 03为合作伙伴设置跨租户访问和 MFA 信任
  4. 04为外部用户制定条件访问策略

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vinayaklatthe/microsoft-security-skills --skill entra-external-id

安装后在 Claude Code 中输入/entra-external-id确认已加载。

详细介绍

Microsoft Entra External ID

Entra External ID 是 Microsoft 面向员工队伍之外的身份的统一平台:

  • 在专用的外部租户中管理客户身份(CIAM)——是 Azure AD B2C 面向新部署的后继方案。
  • 在你的员工租户中管理业务合作伙伴协作(B2B)——包括来宾、B2B 直接连接和跨租户访问设置。

两者都在同一管理界面中管理,并使用同一 Conditional Access 引擎。

适用场景

  • 通过社交账号或电子邮件注册,让客户/消费者登录你的应用。
  • 替换 Azure AD B2C(Microsoft 为新的 CIAM 部署指定的路径)。
  • 将外部合作伙伴邀请为 B2B 来宾,并通过 Conditional Access 管理他们。
  • 为联合身份验证的合作伙伴组织配置跨租户访问。

此技能不适用于员工身份(entra-id)、员工生命周期治理(entra-id-governance)或员工 CA 策略编写(conditional-access-mfa)。

外部租户与员工租户——先做选择

场景租户类型
面向公众的消费者应用、社交账号/电子邮件注册、自定义品牌登录外部租户(CIAM)
合作伙伴公司的员工在 Teams/SharePoint/Apps 中协作员工租户(B2B 来宾、跨租户访问)
两者都需要分别使用外部租户和现有员工租户

**经验法则:**切勿在同一个员工租户中混用客户和员工——许可、品牌、生命周期和 CA 范围很快就会出现差异。

实施方法

外部租户(CIAM)
  1. 创建外部租户(与员工租户分开)。选择区域;数据驻留位置固定于租户。

  2. 在外部租户中注册客户应用。SDK:适用于 Web/SPA/移动端的 MSAL,以及原生集成。

  3. **编写用户流。**内置流涵盖常见场景:注册/登录、密码重置、编辑个人资料。配置:

    • 身份提供商(电子邮件 + 密码、电子邮件 OTP、Google、Facebook、Apple、通用 OIDC、SAML)。
    • Passkey 支持(根据区域处于预览版/GA 阶段)——从第一天起即可免密码登录。
    • 你要收集的自定义属性。
    • 品牌设置(徽标、颜色、用于登录页面的自定义 CSS/HTML)。
  4. 自定义身份验证扩展取代旧版 B2C 自定义策略 XML 模型。分为两类:

    • 令牌签发启动——在登录时调用外部 API 以补充声明 (例如,从 CRM 查询会员等级)。
    • 属性收集/提交——在注册期间调用 API,以验证或补充新用户的信息 (例如,进行第三方身份验证)。
  5. **针对外部用户的 Conditional Access。**在外部租户中应用 CA 策略 ——基于风险的 MFA、设备平台限制、封锁国家/地区。外部租户包含 CA。

  6. 从 Azure AD B2C 迁移——无法原地升级。请做好以下规划:

    • 在 External ID 中重新创建应用注册和用户流。
    • 通过 Microsoft Graph 批量迁移用户(无法导出密码;用户需在首次登录时重置密码,或者通过即时 JIT 迁移分阶段进行迁移)。
    • 迁移期间并行运行 B2C 和 External ID;按应用逐步切换。
劳动力租户(B2B 协作)
  1. 跨租户访问设置 — 针对每个合作伙伴租户进行决策:

    • B2B 协作:将其用户作为来宾邀请到你的租户。
    • B2B 直接连接:其用户通过 Teams 共享频道访问,无需成为你租户中的来宾(目前:Teams + 选定资源)。
    • 入站 MFA 信任:信任合作伙伴的 MFA 声明,不再重新提示。
    • 出站限制:限制你的用户在其租户中可执行的操作。
  2. 默认策略较为宽松。 收紧默认跨租户访问设置,将其设为阻止,然后将受信任的合作伙伴租户加入允许列表。

  3. 来宾生命周期。 设置:

    • 检测不活跃来宾并自动清理(Entra ID Governance 访问评审)。
    • 来宾邀请限制 — 规定组织内哪些人可以邀请(默认:任何人;请设为特定角色)。
    • 邀请的电子邮件域名允许列表 / 拒绝列表。
  4. 劳动力租户支持自助注册 + 用户流,用于 B2B 自助协作 — 适用于合作伙伴自助入驻门户。

  5. 明确对来宾应用 CA。 默认情况下,CA 的“所有用户”包括来宾,但大多数组织需要单独且通常更严格的策略(始终要求 MFA;不检查设备合规性,因为来宾设备不受管理)。

防护措施

  • 不要将客户和员工放在同一个租户中。 品牌、许可、CA 范围和生命周期管理都会相互冲突。
  • External ID 是未来方向;Azure AD B2C 对新租户处于维护阶段。 对于新的 CIAM 构建,默认选择 External ID。
  • 自定义身份验证扩展是 HTTP Webhook。 它们运行在你的身份验证路径中,必须具备高可用性、低延迟和幂等性。
  • 跨租户访问的默认设置较为宽松。 开箱即用时,任何租户的任何人都可以被邀请,并且可能访问共享内容。第一天就收紧设置。
  • B2B 直接连接会绕过来宾对象 — 治理模式不同。不要对其应用来宾访问评审,并期望借此发现直接连接用户。
  • 来宾密码不在你的租户中。 强制执行 MFA 需要明确的 CA 策略,或信任合作伙伴的入站 MFA。
  • 电子邮件 OTP 不是 MFA。 对没有 MSA / 社交账号的用户来说,它只是方便注册的方式。还需叠加真正的 MFA。
  • External ID 中的通行密钥是客户身份验证的最强方式。 将通行密钥作为首选路径,而非密码 + OTP。

常见反模式

  • “将客户作为来宾放在劳动力租户中” — 许可混乱、品牌冲突,且无法大规模治理。
  • “尝试导入 XML 来迁移 B2C 自定义策略” — External ID 不使用这些策略。请使用扩展重新编写。
  • “跨租户访问保持默认设置” — 任何合作伙伴都能邀请,任何用户都可能被邀请,且没有 MFA 协调。请明确配置。
  • “来宾不活跃期限 = 365 天” — 审计人员会提出问题,安全漏洞的影响范围也会扩大。设为 90 或 180 天。
  • “自定义身份验证扩展的 Webhook 托管在单区域 App Service 上” — 会导致登录中断。请使用多区域部署 + 健康探测。
  • “对来宾应用与员工相同的 CA 策略” — 来宾的设备合规性检查会失败,导致其被阻止。请编写单独的来宾策略。
  • “在劳动力 Entra ID 上使用自助注册构建客户身份验证” — 适用于小规模合作伙伴场景,但无法扩展到 CIAM 级别的用量或品牌需求。

示例提示词

  • 为面向消费者的移动应用搭建 Entra External ID 租户,支持电子邮件 + 通行密钥 和 Google 登录。
  • 将 200,000 名用户和 3 个应用从 Azure AD B2C 迁移到 Entra External ID,同时尽量减少 对客户的影响。
  • 编写自定义身份验证扩展,在登录期间将 CRM 忠诚度等级添加到令牌中。
  • 锁定跨租户访问默认设置,并将 12 个合作伙伴租户列入允许列表,同时信任其传入的 MFA。
  • 推出 Conditional Access,要求来宾每次登录都进行 MFA,并阻止 旧式身份验证。
  • 为 Teams 共享频道与两家战略合作伙伴设置 B2B 直接连接。
  • 每季度审核 8,000 名合作伙伴用户的来宾访问权限——工作流和 Graph 自动化。

Microsoft Learn

评论

支持 Markdown