Configure o MongoDB com o Workforce Identity Federation para autenticar usuários em diferentes plataformas usando um único conjunto de credenciais. Isso aumenta a segurança e simplifica o gerenciamento de usuários.
Importante
O OpenID Connect (OIDC) é compatível apenas com Linux.
Antes de começar
Verifique se você está no MongoDB Enterprise.
Para verificar se você está usando o MongoDB Enterprise, passe a
--version
opção de linha de comando para omongod
mongos
ou:mongod --version Na saída deste comando, procure a string
modules: subscription
oumodules: enterprise
para confirmar que você está usando os binários MongoDB Enterprise.Configure seu provedor de identidade externo. Para obter mais detalhes, consulte Configurar um provedor de identidade externo para autenticação da força de trabalho.
Passos
Configurar o servidor MongoDB com OpenID Connect (OIDC)
Observação
Ao configurar MongoDB para Federação de Identidade da Força de Trabalho, omita o campo supportsHumanFlows
em oidcIdentityProviders
.
Você pode configurar o servidor MongoDB utilizando seu arquivo de configuração ou linha de comando.
Para usar seu arquivo de configuração, especifique estes parâmetros no arquivo:
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: '[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "clientId": "0zzw3ggfd2ase33", } ]'
Para especificar vários fornecedores de identidade, adicione objetos adicionais à array oidcIdentityProviders
. Ao especificar vários fornecedores de identidade, você deve especificar um matchPattern
para cada fornecedor. Por exemplo:
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", } ]'
Para usar a linha de comando, especifique as seguintes opções de inicialização:
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", } ]'
Para especificar vários fornecedores de identidade, adicione objetos adicionais à array oidcIdentityProviders
. Ao especificar vários fornecedores de identidade, você deve especificar um matchPattern
para cada fornecedor. Por exemplo:
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", } ]'
(Opcional) Habilitar autorização interna
Para habilitar a autorização interna, configure o campo useAuthorizationClaim
do parâmetro oidcIdentityProviders
para false
. Essa configuração permite um gerenciamento de usuários mais flexível, dependendo dos documentos do usuário em vez de em declarações de autorização do provedor de identidade.
Importante
Se useAuthorizationClaim
estiver definido como false
, não inclua o campo authorizationClaim
.
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: '[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "clientId": "0zzw3ggfd2ase33" } ]'
Para especificar vários fornecedores de identidade, adicione objetos adicionais à array oidcIdentityProviders
. Por exemplo:
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" } ]'
Para especificar vários fornecedores de identidade, adicione objetos adicionais à array oidcIdentityProviders
. Por exemplo:
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" } ]'
Ao definir useAuthorizationClaim
como false
, os usuários que se autenticam com o mecanismo MONGODB-OIDC
obtêm seus direitos de autorização de um documento de usuário no $external
. O servidor pesquisa um documento de usuário com um _id
correspondente ao valor da declaração authNamePrefix/principalName
para cada tentativa de autenticação baseada em OIDC para um usuário do seu provedor de identidade.