Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/

Mecanismos de autenticação

Nesta página

  • Visão geral
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-X509
  • MONGODB-AWS
  • MongoDB\ClientCredentials
  • Variáveis de ambiente
  • Solicitação AssumeRoleWithWebIdentity
  • ECS Metadata
  • EC2 Metadados de instância
  • Informações adicionais
  • Documentação da API

Este guia descreve os mecanismos que você pode usar na biblioteca PHP para autenticar usuários.

Importante

Codificação percentual

Você precisa codificar por cento um nome de usuário e senha antes de incluí-los em um URI MongoDB . Você pode usar o método rawurlencode() para codificar esses valores de acordo com a sintaxe do URI especificada em RFC 3986. Não codifique o nome de usuário ou a senha ao passá-los em um parâmetro de array de opções para o construtor MongoDB\Client .

Para saber mais, consulte os seguintes recursos:

  • RFC 3986

  • código bruto no manual do PHP

SCRAM-SHA-256, conforme definido por RFC 7677, é o mecanismo de autenticação padrão em MongoDB que executam o MongoDB Server v4.0 ou mais tarde.

Para autenticar com esse mecanismo, defina as seguintes opções de conexão:

  • username: o nome de usuário para autenticar. Porcentagem Codifique esse valor antes de incluí-lo em um URI de conexão.

  • password: A senha para autenticar. Porcentagem Codifique esse valor antes de incluí-lo em um URI de conexão.

  • authSource: O banco de banco de dados MongoDB para autenticar. Por padrão, a biblioteca PHP do MongoDB autentica no banco de banco de dados no URI de conexão, se você incluir um. Caso contrário, ele autentica no banco de banco de dados do admin .

  • authMechanism: Defina como 'SCRAM-SHA-256'. Quando conectado ao MongoDB Server v4.0, configurar authMechanism é opcional.

Você pode definir essas opções de duas maneiras: passando uma array de opções para o construtor MongoDB\Client ou por meio de parâmetros em seu URI de conexão.

$uriOptions = [
'username' => '<username>',
'password' => '<password>',
'authSource' => '<authentication database>',
'authMechanism' => 'SCRAM-SHA-256',
];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
$uriOptions,
);
$uri = 'mongodb://<username>:<password>@<hostname>:<port>/?authSource=admin&authMechanism=SCRAM-SHA-256';
$client = new MongoDB\Client($uri);

SCRAM-SHA-1, conforme definido por RFC 5802, é o mecanismo de autenticação padrão em MongoDB que executam o MongoDB Server v3.6.

Observação

Biblioteca PHP do MongoDB v1.20 elimina o suporte para o MongoDB Server v3.6. Ao usar v1.20+ da biblioteca, todas as versões de servidor suportadas têm como padrão o mecanismo de autenticação SCRAM-SHA-256 .

Para autenticar com esse mecanismo, use a mesma sintaxe que SCRAM-SHA-256, mas altere o valor da opção authMechanism para 'SCRAM-SHA-1'.

Se você habilitar o TLS, durante a negociação do TLS, a Biblioteca PHP do MongoDB poderá apresentar um certificado de cliente X.509 ao MongoDB para provar sua identidade. O mecanismo de autenticação MONGODB-X509 utiliza este certificado para autenticar o cliente.

Para autenticar com esse mecanismo, defina as seguintes opções de conexão:

  • tls: Defina como true.

  • tlsCertificateKeyFile: o caminho do arquivo .pem que contém seu certificado de cliente e chave privada.

  • authMechanism: Defina como 'MONGODB-X509'.

Você pode definir essas opções de duas maneiras: passando uma array de opções para o construtor MongoDB\Client ou por meio de parâmetros em seu URI de conexão.

$uriOptions = [
'tls' => true,
'tlsCertificateKeyFile' => '<file path>',
'authMechanism' => 'MONGODB-X509',
];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
$uriOptions,
);
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=<file path>&authMechanism=MONGODB-X509';
$client = new MongoDB\Client($uri);

Importante

O mecanismo de autenticação MONGODB-AWS requer MongoDB Server v4.4 ou posterior.

O mecanismo de autenticação do MONGODB-Amazon Web Services utiliza credenciais do Amazon Web Services IAM (Amazon Web Services Identity and Access Management) ou Amazon Web Services Lambda para autenticar seu aplicação. Para usar esse método de autenticação, você deve especificar 'MONGODB-AWS' como o valor da opção de conexão authMechanism .

Observação

A biblioteca PHP do MongoDB usa a implementação da libmongoc do mecanismo de autenticação MONGODB-AWS. Para saber mais sobre como usar esse mecanismo de autenticação com libmongoc, consulte Autenticação via Amazon Web Services IAM na documentação do driver C.

Quando você usa o mecanismo MONGODB-Amazon Web Services , o driver tenta recuperar as credenciais do Amazon Web Services das seguintes fontes, na ordem listada:

  1. Opções passadas para MongoDB\Client como parte do URI de conexão ou um parâmetro de opções

  2. Variáveis de ambiente

  3. Solicitação Amazon Web Services EKS AssumeRoleWithWebIdentity

  4. Metadados do container ECS

  5. Metadados de instância do EC2

As seções a seguir descrevem como recuperar credenciais dessas fontes e utilizá-las para autenticar seu aplicação PHP.

Primeiro, o driver verifica se você passou as credenciais do Amazon Web Services para o construtor MongoDB\Client, como parte do URI de conexão ou do parâmetro da array $uriOptions. Para passar suas credenciais para MongoDB\Client, defina as seguintes opções de conexão:

  • username: O ID da chave de acesso do Amazon Web Services IAM para autenticar. Porcentagem Codifique esse valor antes de incluí-lo em um URI de conexão.

  • password: A chave de acesso secreto IAM do Amazon Web Services. Porcentagem Codifique esse valor antes de incluí-lo em um URI de conexão.

  • authMechanism: Defina como 'MONGODB-AWS'.

Você pode definir essas opções de duas maneiras: passando uma array de opções para o construtor MongoDB\Client ou por meio de parâmetros em seu URI de conexão.

$uriOptions = [
'username' => '<AWS IAM access key ID>',
'password' => '<AWS IAM secret access key>',
'authMechanism' => 'MONGODB-AWS',
];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
$uriOptions,
);
$uri = 'mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

Se você não fornecer um nome de usuário e senha ao construir seu objeto MongoDB\Client , o driver tentará recuperar as credenciais do Amazon Web Services a partir das seguintes variáveis de ambiente:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

Para usar essas variáveis de ambiente para autenticar seu aplicação, primeiro defina-as para os valores do Amazon Web Services IAM necessários para a autenticação. Você pode executar o comando export em seu shell ou adicionar as variáveis a um arquivo .env , conforme mostrado no exemplo de código a seguir:

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>
AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
AWS_SESSION_TOKEN=<AWS session token>

Importante

Não codifique os valores nessas variáveis de ambiente.

Após configurar estas variáveis de ambiente, configure a opção de conexão do authMechanism para 'MONGODB-AWS'.

O exemplo a seguir define a opção de conexão authMechanism . Você pode definir essa opção de duas maneiras: passando uma array de opções para o construtor MongoDB\Client ou por meio de um parâmetro em seu URI de conexão.

$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
['authMechanism' => 'MONGODB-AWS']
);
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

Dica

AWS Lambda

Os tempos de execução Amazon Web Services Lambda podem definir automaticamente essas variáveis de ambiente durante a inicialização. Para obter mais informações sobre o uso de variáveis de ambiente em um Amazon Web Services Lambda ambiente do , consulte Uso de Lambda variáveis de ambiente do na documentação do Amazon Web Services .

Se o seu aplicação autenticar usuários para o seu cluster EKS a partir de um provedor de identidade OpenID Connect (OIDC), o driver poderá fazer uma solicitação do AssumeRoleWithWebIdentity para trocar o token OIDC por credenciais temporárias do Amazon Web Services para seu aplicação.

Para autenticar com credenciais temporárias Amazon Web Services IAM retornadas por uma solicitação de AssumeRoleWithWebIdentity, verifique se o arquivo de configuração do Amazon Web Services existe em seu ambiente e está configurado corretamente. Para saber como criar e configurar um Amazon Web Services arquivo de configuração do , consulte Configuração na documentação do Amazon Web Services .

Após configurar seu ambiente para uma solicitação do AssumeRoleWithWebIdentity , configure a opção de conexão do authMechanism para 'MONGODB-AWS'. Para visualizar um exemplo que define a opção authMechanism , consulte o exemplo authMechanism nesta página.

Dica

Para obter mais informações sobre como usar uma solicitação AssumeRoleWithWebIdentity para autenticar seu aplicativo, consulte a seguinte documentação do Amazon Web Services:

Se o seu aplicação for executado em um container do Elastic Container Service (ECS), o driver poderá recuperar automaticamente credenciais temporárias Amazon Web Services de um endpoint do ECS. Para fazer isso, especifique o URI do ponto de extremidade ECS em uma variável de ambiente chamada AWS_CONTAINER_CREDENTIALS_RELATIVE_URI. Você pode definir essa variável executando o comando shell export ou adicionando-a ao arquivo .env , conforme mostrado no exemplo a seguir:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

Após configurar a variável de ambiente, configure a opção de conexão do authMechanism para 'MONGODB-AWS'. Para visualizar um exemplo que define a opção authMechanism , consulte o exemplo authMechanism nesta página.

O driver pode recuperar automaticamente credenciais temporárias Amazon Web Services de uma instância do Amazon Elastic Cloud Compute (EC2). Para usar credenciais temporárias de dentro de uma instância do EC2 , configure a opção de conexão do authMechanism para 'MONGODB-AWS'. Para visualizar um exemplo que define a opção authMechanism , consulte o exemplo authMechanism nesta página.

Observação

A biblioteca PHP do MongoDB recupera credenciais de uma instância do EC2 somente se as variáveis de ambiente descritas na seção Variáveis de ambiente não estiverem definidas.

Para saber mais sobre como criar um objeto MongoDB\Client na Biblioteca PHP do MongoDB , consulte o guia Criar um cliente MongoDB .

Para saber mais sobre a classe MongoDB\Client , consulte MongoDB\Client na documentação da API da biblioteca.

Para ver uma lista completa de opções de URI que você pode passar para um MongoDB\Client, consulte MongoDB\Driver\Manager::__construct() Parameters na documentação da API da extensão.

Voltar

Segurança