使用员工身份联合配置 MongoDB
通过使用单一凭据集跨不同平台验证用户,使用工作力量身份联合配置 MongoDB 以增强安全性并简化用户管理。
在开始之前
请确保您正在使用MongoDB Enterprise。
要验证您正在使用MongoDB Enterprise,请将
--version
命令行选项传递给mongod
或mongos
:mongod --version 在命令输出的字符串中查找
modules: subscription
或modules: enterprise
以确认您正在使用MongoDB Enterprise二进制文件。配置您的外部身份提供者。有关更多详细信息,请参阅配置外部身份提供者。
步骤
使用OpenID Connect (OIDC)配置MongoDB服务器
要配置MongoDB服务器,请启用MONGODB-OIDC 认证机制,并使用oidcIdentityProviders
指定身份提供者(IDP)配置。
注意
当配置MongoDB用于Workforce身份联合,将 supportsHumanFlows
字段在 oidcIdentityProviders
中设置为 true
。
您可以使用配置文件或命令行配置 MongoDB 服务器。
要使用配置文件,请在文件中指定两个参数
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: [ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "JWKSPollSecs": 86400 } ]
要使用命令行,请指定以下内容
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "JWKSPollSecs": 86400 } ]'
(可选) 启用内部授权
要启用内部授权,将 oidcIdentityProviders
参数的 useAuthorizationClaim
字段设置为 false
。此设置通过依赖用户文档而不是身份提供者的授权声明,实现更灵活的用户管理。
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: [ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "useAuthorizationClaim": "false", "JWKSPollSecs": 86400 } ]
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "useAuthorizationClaim": "false", "JWKSPollSecs": 86400 } ]'
当将 useAuthorizationClaim
设置为 false
时,使用 MONGODB-OIDC
机制进行身份验证的用户将从 $external
中的用户文档获取其授权权限。对于您的身份提供者的每个用户基于 OIDC 的身份验证尝试,服务器都会搜索具有与 authNamePrefix/principalName
声明值匹配的 _id
的用户文档。
重要
如果将此字段设置为 false
,请勿 包含 authorizationClaim
字段。