使用 Workforce Identity Federation 配置MongoDB ,使用一设立凭证跨不同平台对用户进行身份验证。 这增强了安全性并简化了用户管理。
重要
OpenID Connect (OIDC) 仅在Linux上受支持。
开始之前
确保您使用的是 MongoDB Enterprise。
要验证您是否正在使用MongoDB Enterprise,请将
--version命令行选项传递给mongod或mongos:mongod --version 在该命令的输出中,请查找字符串
modules: subscription或modules: enterprise,以确认您使用的是 MongoDB Enterprise 二进制文件。配置外部 身份提供程序。有关更多详细信息,请参阅为劳动力身份验证配置 OIDC。
步骤
使用 OpenID Connect (OIDC) 配置MongoDB服务器
注意
为 Workforce Identity Federation 配置MongoDB时,请省略 oidcIdentityProviders 中的 supportsHumanFlows字段。
您可以使用配置文件或命令行来配置MongoDB服务器。
要使用配置文件,请在文件中指定以下参数:
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: '[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "clientId": "0zzw3ggfd2ase33", } ]'
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。指定多个 IdP 时,必须为每个提供商指定 matchPattern。示例:
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: '[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "matchPattern": "@okta.com$", "clientId": "0zzw3ggfd2ase33", }, { "issuer": "https://azure-test.azure.com", "audience": "example2@kernel.mongodb.com", "authNamePrefix": "azure-issuer", "authorizationClaim": "groups", "matchPattern": "@azure.com$", "clientId": "1zzw3ggfd2ase33", } ]'
要使用命令行,请指定以下初创企业选项:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "clientId": "0zzw3ggfd2ase33", } ]'
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。指定多个 IdP 时,必须为每个提供商指定 matchPattern。示例:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "matchPattern": "@okta.com$", "clientId": "0zzw3ggfd2ase33", }, { "issuer": "https://azure-test.azure.com", "audience": "example2@kernel.mongodb.com", "authNamePrefix": "azure-issuer", "authorizationClaim": "groups", "matchPattern": "@azure.com$", "clientId": "1zzw3ggfd2ase33", } ]'
(可选)启用内部授权
要启用内部授权,请将 oidcIdentityProviders 参数的 useAuthorizationClaim字段设立为 false。此设置依靠用户 document 而不是来自身份提供程序 的授权声明,从而实现更灵活的用户管理。
重要
如果将 useAuthorizationClaim 设立为 false,则不要包含 authorizationClaim 字段。
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: '[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "clientId": "0zzw3ggfd2ase33" } ]'
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。示例:
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: '[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "clientId": "0zzw3ggfd2ase33" }, { "issuer": "https://azure-test.azure.com", "audience": "example2@kernel.mongodb.com", "authNamePrefix": "azure-issuer", "useAuthorizationClaim": false, "clientId": "1zzw3ggfd2ase33" } ]'
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "clientId": "0zzw3ggfd2ase33" } ]'
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。示例:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "clientId": "0zzw3ggfd2ase33" }, { "issuer": "https://azure-test.azure.com", "audience": "example2@kernel.mongodb.com", "authNamePrefix": "azure-issuer", "useAuthorizationClaim": false, "clientId": "1zzw3ggfd2ase33" } ]'
当您将useAuthorizationClaim设立为false时,使用MONGODB-OIDC机制进行身份验证的用户将从$external中的用户 document 获取授权权限。对于 IdP 用户每次基于 OIDC 的身份验证尝试,服务器都会搜索 _id 与 authNamePrefix/principalName 声明的值匹配的用户 document。
(有条件)内部 X509 TLS 的 CA 证书
对于使用由内部证书颁发机构 (CA) 签名的 X509 TLS 证书的环境,您必须将该 CA 证书添加到系统 CA 证书捆绑包中,以便 mongod 可以与身份提供程序通信。这应用于用户身份验证,也应用于使用回调方法时的工作负载身份验证。省略此步骤可能会导致 OIDC SSL 证书或 JWT 密钥验证错误。
分片集群的 oidcIdentityProviders
在分片集群中,在每个 实例上配置oidcIdentityProviders mongos。客户端通过 mongos 进行身份验证,这需要此配置来验证 身份提供程序 令牌。如果客户端直接连接到配置服务器或分片mongod 实例,则还必须在这些实例上配置 oidcIdentityProviders。
将本教程中的步骤应用于部署中的每个 mongos实例。要为 Workforce Identity Federation 配置数据库用户,请参阅使用 Workforce Identity Federation 授权用户。