功能预览:将 OIDC 组映射到团队
即将发布的 Gitea 1.19 新增了将 OIDC 组映射到组织团队的功能。 Gitea 经常与 Azure Active Directory 结合用于身份验证。 现在,借助 OIDC 组映射,你可以将用户的 Active Directory 组映射到 Gitea 组织团队。 这样就能对仓库和组织进行更集中的用户访问管理。
要使用此功能,你需要创建一个 Azure Active Directory 应用,将 Gitea 配置为使用该应用,然后将 Azure Active Directory 组映射到 Gitea 团队。本文将带你逐步完成配置,使其正常运行。
下面我将说明在没有内部部署 AD 的情况下,将 Azure 用户组映射到 Gitea 不同团队所需的所有步骤。
Azure 配置
在应用注册中创建一个应用。目前你不需要 Redirect URI。

如你所见,已经创建了一个关联到此应用注册的企业应用。

在已注册应用的“身份验证”部分,启用公共客户端流:

在已注册应用的“证书和机密”部分,创建一个新机密并保存给出的机密 ID,因为关闭此部分后将无法再次查看。

在已注册应用的“令牌配置”部分,点击“添加组声明”并选择仅分配已分配给应用程序的组的选项(此步骤将在第 7 步完成)。

在已注册应用的“API 权限”部分,添加一个名为 Group.Read.All 的委托权限。你需要授予管理员同意。

在创建的企业应用中,进入“属性”,将“分配要求?”选项更改为“是”。这将允许所有用户无需管理员权限即可登录或注册。

在创建的企业应用中,进入“用户和组”部分,添加你想要映射到 Gitea 团队的组。在我们的示例中,组名为 ce-operations。

Gitea 配置
在站点配置的“认证源”部分,创建一个新的 OAuth2 认证源。
为其设置一个认证名称,并将 OAuth2 提供者选为 OpenID Connect。
从 Azure 中获取已注册应用的 Application (client) ID,填入 Client ID (Key) 选项。
将之前创建的 secret 填入 Client Secret 选项。

对于 OpenID Connect Auto Discovery URL 选项,前往 Azure,在已注册应用的“概览”中点击 Endpoints,并复制 OpenID Connect 元数据文档。

在 Additional Scopes 中可以添加 openid email profile。
在 Claim name providing group names for this source. 中,输入 groups。
最后,在 Map claimed groups to Organization teams. 中写入你要从 Azure 映射的组的 Object ID(本例中为 Azure 组 ce-operations 的 Object ID)、你希望用户自动加入的组织名称(本例中为 creamteam),以及该组织下的团队名称(本例中为 Developers)。注意:组织和团队需要事先创建好。

更新认证源并使用 OpenID 登录选项进行测试。此时你的用户应该已成为该组织及团队的成员。

最后,非常感谢 KN4CK3R 为促成此功能所做的合并请求工作。
希望这对任何想要使用 Azure 进行 SSO 并自动将用户添加到组织团队的人有所帮助 😃。如果你确实使用了此方法并发现任何问题,欢迎在 Gitea 工单跟踪器 上发起工单。
