Mecanismos de autenticação
O driver Scala suporta todos os mecanismos de autenticação MongoDB , incluindo aqueles disponíveis somente no MongoDB Enterprise Edition.
MongoCredential
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.
Mecanismo de autenticação padrão
O mecanismo de autenticação padrão para MongoDB 6.0 e posterior é SCRAM-SHA-256
.
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 = "<db_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")
Mecanismos baseados em SCRAM
O Mecanismo de Autenticação de Resposta de Desafio Salgado (SCRAM
) é o mecanismo de autenticação padrão para o 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.
SCRAM-SHA-256
O uso desse mecanismo requer que o featureCompatibilityVersion
seja definido como 4.0 ou uma versão posterior.
Para criar explicitamente uma credencial do tipo SCRAM-SHA-256
, utilize o método createScramSha256Credential()
:
val user = "<db_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")
x.509
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.