教程:Microsoft Entra SSO 与 GitHub Enterprise Cloud Organization 的 SSO 集成
本教程介绍如何将 GitHub Enterprise Cloud Organization 与 Microsoft Entra ID 相集成。 将 GitHub Enterprise Cloud Organization 与 Microsoft Entra ID 集成后,可以:
- 在 Microsoft Entra ID 中控制谁有权访问 GitHub Enterprise Cloud Organization。
- 在一个集中位置管理对 GitHub Enterprise Cloud Organization 的访问。
先决条件
若要开始操作,需备齐以下项目:
- 一个 Microsoft Entra 订阅。 如果没有订阅,可以获取一个免费帐户。
- 一家在 GitHub 企业云(需要 GitHub Enterprise 计费计划)中创建的 GitHub 组织。
方案描述
在本教程中,你将在测试环境中配置并测试 Microsoft Entra 单一登录。
GitHub 支持 SP 发起的 SSO。
GitHub 支持自动用户预配(组织邀请)。
从库中添加 GitHub
若要配置 GitHub 与 Microsoft Entra ID 的集成,需要从库中将 GitHub 添加到托管 SaaS 应用列表中。
- 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
- 浏览至“标识”>“应用程序”>“企业应用程序”>“新建应用程序”。
- 在“从库中添加”部分中,在搜索框中键入“GitHub” 。
- 从结果面板中选择“GitHub Enterprise Cloud - 组织”,然后添加应用。 在该应用添加到租户时等待几秒钟。
或者,也可以使用企业应用配置向导。 在此向导中,可以将应用程序添加到租户、将用户/组添加到应用、分配角色,以及逐步完成 SSO 配置。 详细了解 Microsoft 365 向导。
配置并测试 GitHub 的 Microsoft Entra SSO
使用名为 B.Simon 的测试用户配置并测试 GitHub 的 Microsoft Entra SSO。 若要使 SSO 正常工作,需要在 Microsoft Entra 用户与 GitHub 中的相关用户之间建立关联。
若要配置并测试 GitHub 的 Microsoft Entra SSO,请执行以下步骤:
- 配置 Microsoft Entra SSO - 使用户能够使用此功能。
- 创建 Microsoft Entra 测试用户 - 使用 B.Simon 测试 Microsoft Entra 单一登录。
- 分配 Microsoft Entra 测试用户 - 使 B.Simon 能够使用 Microsoft Entra 单一登录。
- 配置 GitHub SSO - 在应用程序端配置单一登录设置。
- 创建 GitHub 测试用户 - 在 GitHub 中创建 B.Simon 的对应用户,并将其链接到该用户的 Microsoft Entra 表示形式。
- 测试 SSO - 验证配置是否正常工作。
配置 Microsoft Entra SSO
按照以下步骤启用 Microsoft Entra SSO。
至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
浏览到“标识”>“应用程序”>“企业应用程序”>“GitHub”>“单一登录”。
在“选择单一登录方法”页上选择“SAML” 。
在“设置 SAML 单一登录”页面上,单击“基本 SAML 配置”旁边的铅笔图标以编辑设置 。
在“基本 SAML 配置”部分,输入以下字段的值:
a. 在“标识符(实体 ID)”文本框中,使用以下模式键入 URL:
https://github.com/orgs/<Organization ID>
b. 在“回复 URL”文本框中,使用以下模式键入 URL:
c. 在“登录 URL”文本框中,使用以下模式键入 URL:
注意
请注意,这些不是实际值。 必须使用实际标识符、回复 URL 和登录 URL 更新这些值。 此处我们建议在“标识符”中使用字符串的唯一值。 转到“GitHub 管理”部分检索这些值。
GitHub 应用程序需要特定格式的 SAML 断言,这要求向 SAML 令牌属性配置添加自定义属性映射。 以下屏幕截图显示了默认属性的列表,其中“唯一用户标识符(名称 ID)”通过 user.userprincipalname 进行映射。 GitHub 应用程序要求通过 user.mail 对“唯一用户标识符(名称 ID)”进行映射,因此需单击“编辑”图标对属性映射进行编辑,然后更改属性映射 。
在“使用 SAML 设置单一登录” 页上,在“SAML 签名证书” 部分中,单击“下载” 以根据要求从给定的选项下载证书(Base64) 并将其保存在计算机上。
在“设置 GitHub”部分中,根据要求复制相应的 URL。
创建 Microsoft Entra 测试用户
在本部分,你将创建名为 B.Simon 的测试用户。
- 至少以用户管理员身份登录到 Microsoft Entra 管理中心。
- 浏览到“标识”>“用户”>“所有用户”。
- 选择屏幕顶部的“新建用户”>“创建新用户”。
- 在“用户”属性中执行以下步骤:
- 在“显示名称”字段中输入
B.Simon
。 - 在“用户主体名称”字段中,输入 username@companydomain.extension。 例如
B.Simon@contoso.com
。 - 选中“显示密码”复选框,然后记下“密码”框中显示的值。
- 选择“查看 + 创建”。
- 在“显示名称”字段中输入
- 选择“创建”。
分配 Microsoft Entra 测试用户
在本部分,你将通过授予 B.Simon 访问 GitHub 的权限,使其能够使用单一登录。
至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
浏览到“标识”>“应用程序”>“企业应用程序”>“GitHub”。
在应用的概述页中,找到“管理”部分,选择“用户和组” 。
选择“添加用户”,然后在“添加分配”对话框中选择“用户和组”。
在“用户和组”对话框中,从“用户”列表中选择“B.Simon”,然后单击屏幕底部的“选择”按钮。
如果你希望将某角色分配给用户,可以从“选择角色”下拉列表中选择该角色。 如果尚未为此应用设置任何角色,你将看到选择了“默认访问权限”角色。
在“添加分配”对话框中,单击“分配”按钮。
配置 GitHub SSO
在另一个 Web 浏览器窗口中,以管理员身份登录 GitHub 组织站点。
导航到“设置”并单击“安全性”。 。
选中“启用 SAML 身份验证”框(这样可显示“单一登录”配置字段),执行以下步骤:
a. 复制“单一登录 URL”值,并将此值粘贴到“基本 SAML 配置”的“登录 URL”文本框中。
b. 复制“断言使用者服务 URL”值,将此值粘贴到“基本 SAML 配置”的“回复 URL”文本框中。
配置以下字段:
a. 在“登录 URL”文本框中,粘贴之前复制的“登录 URL”值。
b. 在“颁发者”文本框中,粘贴之前复制的“Microsoft Entra 标识符”值。
c. 在记事本中打开从 Azure 门户下载的证书,将内容粘贴到“公共证书”文本框中。
d. 单击“编辑”图标,将“签名方法”和“摘要方法”从 RSA-SHA1 和 SHA1 编辑为 RSA-SHA256 和 SHA256,如下所示 。
e. 从默认 URL 更新“断言使用者服务 URL (回复 URL)”,以便 GitHub 中的 URL 与 Azure 应用注册中的 URL 匹配。
单击“测试 SAML 配置”,确认在 SSO 期间未发生验证失败错误。
单击“保存”
注意
GitHub 中的单一登录向 GitHub 中的特定组织进行身份验证,并不替换 GitHub 本身的身份验证。 因此,如果用户的 github.com 会话已过期,可能会要求你在单一登录过程中使用 GitHub 的 ID/密码进行身份验证。
创建 GitHub 测试用户
本部分的目的是在 GitHub 中创建名为“Britta Simon”的用户。 GitHub 支持在默认情况下启用的自动用户预配。 有关如何配置自动用户预配的更多详细信息,请参见此处。
如果需要手动创建用户,请执行以下步骤:
以管理员身份登录到 GitHub 公司站点。
单击“人员”。
单击“邀请成员”。
在“邀请成员”对话框页上,执行以下步骤:
a. 在“电子邮件”文本框中,键入 Britta Simon 帐户的电子邮件地址。
b. 单击“发送邀请”。
注意
Microsoft Entra 帐户持有者将收到一封电子邮件,并打开用于在激活帐户前确认其帐户的链接。
测试 SSO
在本部分,你将使用以下选项测试 Microsoft Entra 单一登录配置。
单击“测试此应用程序”,这会重定向到 GitHub 登录 URL,可以从那里启动登录流。
直接转到 GitHub 登录 URL,并从那里启动登录流。
你可使用 Microsoft 的“我的应用”。 在“我的应用”中单击 GitHub 磁贴时,会重定向到 GitHub 登录 URL。 有关“我的应用”的详细信息,请参阅“我的应用”简介。
后续步骤
配置 GitHub 后,可以强制实施会话控制,从而实时防止组织的敏感数据外泄和渗透。 会话控制从条件访问扩展而来。 了解如何通过 Microsoft Defender for Cloud Apps 强制实施会话控制。