配置外部身份提供者
要使用 OIDC 配置 Workforce Identity Federation,请向外部身份提供商(例如 Okta 或Microsoft Entra ID)注册您的 OIDC应用程序。这可确保安全身份验证并简化用户管理。
关于此任务
Workforce Identity Federation 使用 OIDC。 您可以使用任何支持 OIDC 标准的外部身份提供商。
您可以为以下授权类型配置 OIDC应用程序:
使用PKCE的授权代码流
设备授权流程
MongoDB建议您将授权代码流与 PKCE 结合使用以提高安全性。 仅当用户需要从没有浏览器的计算机上访问权限数据库时,才使用设备授权流程。
注意
Workforce Identity Federation 仅支持使用JSON web token进行身份验证。它不支持不透明访问权限令牌。
以下过程提供了Microsoft Entra ID和 Okta 的详细配置说明,以及其他外部身份提供程序的通用配置说明。
开始之前
步骤
注册应用程序
导航至 App registrations 。
在Azure 门户 中 帐户、 ,然后单击Atlas Search Microsoft Entra ID。
在左侧导航栏的 Manage 部分,单击 App registrations。
单击 New registration(连接)。
应用以下值。
字段值Name
MongoDB - Workforce
Supported Account Types
Accounts in this organizational directory only (single tenant)
Redirect URI
- Public client/native (mobile & desktop)- To access clusters using MongoDB Compass and MongoDB Shell, set the Redirect URI tohttp://localhost:27097/redirect
.单击 Register(连接)。
要了解有关注册应用程序的更多信息,请参阅 Azure 文档。
添加群组声明
导航至 Token Configuration。
在左侧导航栏的 Manage 部分,单击 Token Configuration。
单击 Add groups claim(连接)。
在 Edit groups claim 模式中,选择 Security。
所选择的群组取决于您在 Azure 环境中配置的群组类型。 您可能需要选择不同类型的群组 来发送相应的群组信息。
在Customize token properties by type部分中,仅选择Group ID 。
单击 Add(连接)。
要了解有关添加群组声明的更多信息,请参阅 Azure 文档。
将用户标识符声明添加到访问权限令牌
单击 Add optional claim(连接)。
在 Add optional claim 模式中,选择 Access。
选择带有用户标识符的声明,您可以在 MongoDB 访问 日志(如电子邮件)中引用该标识符。
您可以使用UPN声明通过电子邮件解决来识别用户。
单击 Add(连接)。
在 Microsoft Graph Permissions(Microsoft Graph 权限)注释中,选中复选框,然后单击 Add(添加)。
要了解详情,请参阅 Azure 文档。
更新清单
在左侧导航栏的 Manage 部分,单击 Manifest。
将 accessTokenAcceptedVersion 从
null
更新为2
。数字
2
代表 Microsoft 访问令牌版本 2。其他应用程序可以将其用作 Active Directory 托管用户身份的签名证明。版本 2 确保令牌是 MongoDB 可理解的 JSON 网络令牌。单击 Save(连接)。
要了解有关添加可选声明的更多信息,请参阅 Azure 文档。
记住元数据
在左侧导航栏中单击 Overview。
复制 Application (client) ID(应用程序(客户端)ID)值。
在顶部导航栏中,单击 Endpoints。
复制不带
/.well-known/openid-configuration
部分的 OpenID Connect metadata document 值。您还可以通过复制 OpenID Connect metadata document URL中
issuer
的值来获取此值。
下表显示了这些Microsoft Entra ID用户界面值在MongoDBoidcIdentityProviders
参数中的映射:
Microsoft Entra ID UI | MongoDB oidcIdentityProviders 参数字段 |
---|---|
Application (client) ID | clientID audience |
OpenID Connect metadata document (without /.well-known/openid-configuration) |
|
在 Okta 中创建应用程序
在 Okta Admin仪表盘,使用左侧导航窗格GoApplications → Applications。
在 Applications 屏幕上,单击 Create App Integration。
在 Sign-in method 部分,选择 OIDC - OpenID Connect。
在 Application type 部分,选择 Native Application。
单击 Next(连接)。
要学习;了解更多信息,请参阅创建 OIDC应用集成。
配置您的 New Native App Integration
创建应用集成后,系统会自动重定向到 New Native App Integration 屏幕。
在 App integration name字段中,输入应用程序的名称。
在 Grant type字段中,选择授权类型。
启用以下授权类型:
Authorization Code or Device Authorization
(可选) Refresh Token
启用刷新令牌可提供更好的用户体验。 如果未启用刷新令牌,则一旦访问权限令牌过期,用户就必须向身份提供商重新进行身份验证。
在 Sign-in redirect URIs 部分,输入URL。
输入以下URL:
http://localhost:27097/redirect
。在 Assignments 部分中,配置 Controlled access 和 Enable immediate access 字段。
对于 Controlled access字段,选择 Allow everyone in your organization to access。
对于 Enable immediate access字段,确保选中 Enable immediate access with Federation Broker Mode。
单击 Save(连接)。
要学习;了解详情,请参阅创建 OIDC应用集成。
为访问权限策略创建规则
在 Access Policies标签页下,单击 Add Rule。
在 Rule Name字段中,输入访问权限策略的名称。
对于 IF Grant Type is,请选择一种授权类型。
配置授权类型时,请根据客户端行为选择适当的选项:
如果客户端代表自身运行,请选择 Client Credentials。
如果客户端端代表用户,请选择以下选项:
Authorization Code
Device Authorization
根据组织的安全策略添加规则配置。
Okta 规则配置示例:
字段
值
AND user is
选择 Any user assigned to the app 。
AND Scopes requested
选择 Any scopes 。
THEN Use this inline hook
无(已禁用)
AND Access token lifetime is
1 Hours
AND Refresh token lifetime is
单击第二个下拉菜单并选择 Unlimited。
but will expire if not used every
输入 7 days。
单击 Create Rule(连接)。
将用户添加到您的组织
在左侧导航窗格中,GoDirectory → People 并单击 Add Person。
通过在相应字段中输入以下值来提供用户详细信息:
字段值User type
选择 User 。
First name
根据需要提供名称。
Last name
根据需要提供名称。
Username
输入电子邮件作为用户名。
Primary email
输入电子邮件。 电子邮件必须与 Username字段使用的电子邮件相同。
Secondary email
可选。
Groups
输入 OIDC。
Activation
选择 Activate Now 并选中 I will set password。
Password
输入密码。
User must change password on first login
选择 Optional
单击 Save(连接)。
(可选)如果您希望MongoDB客户端刷新令牌以获得更好的用户体验,请允许刷新令牌
(可选)配置访问权限令牌生命周期(exp
声明)以与数据库连接会话时间保持一致
注册应用程序后,保存 issuer
、 clientId
和 audience
值以在下一阶段的配置中使用。