本指南向您介绍如何使用 Okta 作为 IdP 来配置 Workforce Identity Federation。
集成 Okta 和Atlas后,您的员工可以使用其 Okta凭证通过 OIDC身份验证访问权限Atlas集群。
必需的访问权限
如需管理联合身份验证,必须拥有 Organization Owner 访问权限,能够访问一个或多个将联合设置委托给实例的组织。
先决条件
如需将 Okta 用作 Atlas 的 IdP,必须具备:
自定义的可路由域名。
步骤
在如下过程中,为您的 Atlas 联合管理控制台和 Okta 帐户分别打开一个浏览器标签页会很有帮助。
将 Okta 配置为身份提供商
使用 Okta 帐户将 Okta 配置为 OIDC IdP。
要将 OIDC 应用程序注册到 Okta,请执行以下操作:
在 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应用集成。
添加授权服务器。
在左侧导航窗格中,GoSecurity → API。 单击 Add Authorization Server。
在 Name字段中,输入服务器的名称。
在 Audience字段中,粘贴上一步中的客户端ID 。
(可选)在 Description字段中,输入服务器的描述。
单击 Save(连接)。
要学习;了解更多信息,请参阅创建授权服务器。
添加 Groups 声明。
在授权服务器屏幕上,GoClaims标签页并单击 Add Claim。
使用以下配置信息配置 Groups 声明:
字段值Name
输入声明的名称。
Include in token type
单击下拉菜单并选择 Access Token。
Value type
单击下拉菜单并选择 Groups。
Filter
单击下拉菜单并选择 Matches regex。在下拉列表旁边,输入仅匹配用于Atlas授权 的群组的正则表达式。示例,如果您的Atlas授权群组使用通用命名前缀,请输入
^<mongodb-atlas-group-prefix>.*,其中<mongodb-atlas-group-prefix>是您选择的前缀。Disable claim
请勿检查。
Include in
选择 Any scope 。
单击 Create(连接)。
重要
避免使用 .* 作为过滤值。 .*表达式匹配分配给用户的每个群组,包括与Atlas授权无关的群组。广泛的过滤会增加访问权限令牌的大小,并且当令牌超过 preAuthMaximumMessageSizeBytes 限制(默认为 16 KiB )时,可能会导致身份验证失败。
要减小令牌大小,请为Atlas授权组创建专用命名约定,并根据该约定过滤。
如果您的部署有意要求大型群组声明,则可以增加集群上的 preAuthMaximumMessageSizeBytes 参数。但是,增加此限制会对资源和安全产生影响,并且不应用于不必要的广泛声明的变通方法。
要学习;了解更多信息,请参阅创建声明。
创建访问权限策略。
在授权服务器屏幕上,GoAccess Policies标签页并单击 Add Policy。
在 Name字段中,输入策略名称。
在 Description字段中,输入策略的说明。
在 Assign to字段中,选择 All clients。
单击 Create Policy(连接)。
要学习;了解更多信息,请参阅创建访问策略。
为访问权限策略创建规则。
在 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 → Groups 并单击 Add Group。
在 Name字段中,将目录命名为
OIDC。(可选)在 Description字段中,输入规则的说明。
单击 Save(连接)。
按照 Okta 文档手动将人员分配到群组。
为您的组织添加用户。
在左侧导航窗格中,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(连接)。
要学习;了解更多信息,请参阅手动添加用户。
在Atlas中配置 Workforce Identity Federation
要在Atlas中配置劳动力身份提供程序,请执行以下操作:
输入以下劳动力身份提供商协议设置。
设置 | 必要性 | 值 |
|---|---|---|
Configuration Name | 必需 | 标识此配置的人类可读标签。 此标签对Atlas用户可见。 |
Configuration Description | Optional | 描述此配置的人类可读标签。 |
Issuer URI | 必需 | 已注册的 IdP应用程序提供的发行者值。 MongoDB使用此 URI 查找 OpenID 提供程序配置文档,该文档应在 |
Client ID | 必需 | 已注册应用程序的唯一标识符。 输入您在外部身份提供程序中注册的应用的 |
Audience | 必需 | 外部身份提供商打算为其提供令牌的实体。 输入您在外部身份提供程序中注册的应用的 |
Requested Scopes | Optional | 授予用户从授权端点请求数据权限的令牌。 如果计划支持刷新令牌,则此字段必须包含值 对于要添加的每个附加作用域,请单击 Add more scopes(添加更多作用域)。 |
Authorization Type | 必需 | 选择 Group Membership 以根据 IdP 用户群组成员身份授予授权,或选择 User ID 以向单个用户授予授权。 |
Customize Groups Claim | 必需 | 包含主体的 IdP 用户群组成员信息的声明的标识符。接受默认值,除非 IdP 使用不同的声明,或者您需要自定义声明。仅当您选择 Group Membership 时才需要此字段。 默认值: |
Customize User Claim | 必需 | 包含用户主体身份的声明的标识符。 接受默认值,除非IdP使用不同的声明。 默认值: |
使用劳动力身份验证添加数据库用户
打开 Add New Database User or Group(添加新的数据库用户)对话框。
单击 Add New Database User or Group(添加新的数据库用户)。
注意
在将 Workforce IdP 应用到 Atlas 之前,此按钮显示 Add New Database User。
选择 Federated Auth(Atlas SQL)。
在 Authentication Method 部分,选择 Federated Auth。
注意
在为组织启用 Workforce IdP 之前,您无法选中此复选框。
分配用户或群组权限。
要向新用户或群组分配权限,请执行以下一项或多项任务:
从 Built-in Role 下拉菜单中,选择一个内置角色。
您可以在 Atlas 用户界面中为每个数据库组选择一个内置角色。
如果删除默认选项,则可以单击Add Built-in Role选择新的内置角色。
选择或添加自定义角色。
如果您定义了任何自定义角色,则可以展开Custom Roles部分,然后从Custom Roles下拉菜单中选择一个或多个角色。
单击Add Custom Role以添加更多自定义角色。
单击Custom Roles链接可查看项目的自定义角色。
添加权限。
展开Specific Privileges部分,然后从Specific Privileges下拉菜单中选择一个或多个权限。
单击Add Specific Privilege可添加更多权限。 这将为群组分配对各个数据库和集合的特定权限。
删除已应用的角色或特权。
- 单击Delete旁边
- 要删除的角色或特权。
注意
如果只选择了一个选项,Atlas 不会在 Built-in Role(内置角色)、Custom Role(自定义角色)或 Specific Privilege(特定权限)选项旁边显示 Delete(删除)图标。应用了其他角色或权限后,就可以删除选定的角色或权限。
Atlas 可以将一个内置角色、多个自定义角色和多个特定权限应用到 数据库群组。
要了解有关授权的更多信息,请参阅 MongoDB 手册中的基于角色的访问控制和内置角色。
使用 Workforce Identity Federation 将客户端连接到MongoDB
下面列出了使用 Workforce Identity Federation身份验证将客户端连接到MongoDB 的方法:
Compass v1.38 +
MongoDB Shell v2.1.4+
注意
如果配置了设备授权流,则在与mongosh连接时必须传递 --oidcFlows=device-auth 标志。示例:
mongosh "<connection-string>" \ --authenticationMechanism MONGODB-OIDC \ --oidcFlows=device-auth