Menu Docs
Página inicial do Docs
/ / /
Scala
/

Mecanismos de autenticação

Nesta página

  • MongoCredential
  • Mecanismo de autenticação padrão
  • Mecanismos baseados em SCRAM
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • x.509

O driver Scala suporta todos os mecanismos de autenticação MongoDB , incluindo aqueles disponíveis somente no MongoDB Enterprise Edition.

Uma credencial de autenticação é representada como uma instância da classe MongoCredential . A classe MongoCredential inclui métodos de fábrica estáticos para cada um dos mecanismos de autenticação suportados.

No MongoDB 3.0, O MongoDB alterou o mecanismo de autenticação padrão de MONGODB-CR para SCRAM-SHA-1. No MongoDB 4.0, o suporte para o mecanismo MONGODB-CR obsoleto foi removido e o suporte SCRAM-SHA-256 foi adicionado.

Para criar uma credencial que autentique usando o mecanismo de autenticação padrão, independentemente da versão do servidor, crie uma credencial usando o método de fábrica estática createCredential() :

val user = "<username>" // the username
val source = "<source>" // the source where the user is defined
val password = ... // the password as a character array
val credential = MongoCredential.createCredential(user, source, password)
val mongoClient = MongoClient(MongoClientSettings
.builder()
.applyToClusterSettings(builder =>
builder.hosts(Collections.singletonList(ServerAddress("localhost", 27017))))
.credential(credential)
.build())

Ou você pode usar uma connection string sem especificar explicitamente o mecanismo de autenticação:

val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1")

Para mecanismos de desafio e resposta, recomendamos usar o mecanismo de autenticação padrão. Essa abordagem simplifica a atualização do MongoDB 2.6 para o MongoDB 3.0, mesmo após a atualização do esquema de autenticação. Para os usuários do MongoDB 4.0, também recomendamos o mecanismo de autenticação padrão, pois ele verifica os mecanismos e usa o algoritmo de hash correto.

O mecanismo de autenticação de resposta e desafio salgado (SCRAM) é o mecanismo de autenticação padrão do MongoDB desde 3.0. SCRAM é baseado no padrão IETF RFC 5802 que define as melhores práticas para a implementação de mecanismos de resposta a desafios para autenticar usuários com senhas.

O MongoDB 3.0 introduziu suporte para SCRAM-SHA-1, que usa a função de hash SHA-1 . O MongoDB 4.0 introduziu suporte para SCRAM-SHA-256 que usa a função de hash SHA-256 .

O uso desse mecanismo requer que o MongoDB 4.0 e featureCompatibilityVersion sejam definidos como 4.0.

Para criar explicitamente uma credencial do tipo SCRAM-SHA-256, utilize o método createScramSha256Credential() :

val user = "<username>" // the username
val source = "<source>" // the source where the user is defined
val password = ... // the password as a character array
val credential = MongoCredential.createScramSha256Credential(user, source, password)
val mongoClient = MongoClient(MongoClientSettings
.builder()
.applyToClusterSettings(builder =>
builder.hosts(Collections.singletonList(ServerAddress("localhost", 27017))))
.credential(credential)
.build())

Ou você pode usar uma connection string que especifique explicitamente authMechanism=SCRAM-SHA-256:

val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-256")

Para criar explicitamente uma credencial do tipo SCRAM-SHA-1, utilize o método createScramSha1Credential() :

val user = "<username>" // the username
val source = "<source>" // the source where the user is defined
val password = ... // the password as a character array
val credential = MongoCredential.createScramSha1Credential(user, source, password)
val mongoClient = MongoClient(MongoClientSettings
.builder()
.applyToClusterSettings(builder =>
builder.hosts(Collections.singletonList(ServerAddress("localhost", 27017))))
.credential(credential)
.build())

Ou você pode usar uma connection string que especifique explicitamente authMechanism=SCRAM-SHA-1:

val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1")

Com o mecanismo x.509, o MongoDB utiliza o certificado x.509 apresentado durante a negociação SSL para autenticar um usuário cujo nome é derivado do nome diferenciado do certificado x.509.

A autenticação x.509 requer o uso de conexões SSL com validação de certificado. Para criar uma credencial deste tipo, utilize o método de fábrica estática createMongoX509Credential():

val credential = MongoCredential.createMongoX509Credential()
val mongoClient = MongoClient(MongoClientSettings
.builder()
.applyToClusterSettings(builder =>
builder.hosts(Collections.singletonList(ServerAddress("localhost", 27017))))
.credential(credential)
.build())

Ou você pode usar uma connection string que especifique explicitamente authMechanism=MONGODB-X509:

val mongoClient = MongoClient("mongodb://subjectName@host1/?authMechanism=MONGODB-X509&ssl=true")

Consulte o tutorial Usar certificados x.para autenticar clientes no manual do servidor para saber mais sobre como usar509 509 certificados x. em seu aplicação.

Voltar

Segurança