身份验证机制
Scala驾驶员支持所有MongoDB身份验证机制,包括仅在MongoDB Enterprise版中提供的机制。
MongoCredential
身份验证档案表示为 MongoCredential
类的实例。 MongoCredential
类包含每种受支持的身份验证机制的静态工厂方法。
默认身份验证机制
在 MongoDB 3.0中, MongoDB 将默认身份验证机制从MONGODB-CR
更改为SCRAM-SHA-1
。 在 MongoDB 4.0中,删除了对已弃用的MONGODB-CR
机制的支持,并添加了SCRAM-SHA-256
支持。
要创建使用默认身份验证机制进行身份验证的档案(无论服务器版本如何),请使用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())
或者,您可以使用连接string ,而无需显式指定身份验证机制:
val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1")
对于挑战和响应机制,我们建议使用默认身份验证机制。这种方法简化了从MongoDB 2.6 到MongoDB 3.0 的升级,即使在升级身份验证模式之后也是如此。对于MongoDB 4.0 用户,我们还建议使用默认身份验证机制,因为它会检查机制并使用正确的哈希算法。
基于 SCRAM 的机制
自 以来,Salted 挑战-响应身份验证机制 () 一直是MongoDB的默认身份验证机制。SCRAM
3.0 SCRAM
基于 IETF RFC5802 标准,该标准定义了实施使用密码对用户进行身份验证的质询-响应机制的最佳实践。
MongoDB 3.0引入了对SCRAM-SHA-1
的支持,它使用SHA-1
哈希函数。 MongoDB 4.0引入了对使用SHA-256
哈希函数的SCRAM-SHA-256
的支持。
SCRAM-SHA-256
使用此机制需要 MongoDB 4.0并将featureCompatibilityVersion
设置为4.0 。
要显式创建类型为SCRAM-SHA-256
的档案,请使用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())
或者,您可以使用显式指定 authMechanism=SCRAM-SHA-256
的连接string :
val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-256")
SCRAM-SHA-1
要显式创建类型为SCRAM-SHA-1
的档案,请使用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())
或者,您可以使用显式指定 authMechanism=SCRAM-SHA-1
的连接string :
val mongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1")
x.509
通过 x.509 机制, MongoDB使用 SSL 协商期间提供的 x.509 证书来对名称源自 x.509 证书标识名的用户进行身份验证。
x.509身份验证要求使用带有证书验证的 SSL 连接。要创建此类档案,请使用 createMongoX509Credential()
静态工厂方法:
val credential = MongoCredential.createMongoX509Credential() val mongoClient = MongoClient(MongoClientSettings .builder() .applyToClusterSettings(builder => builder.hosts(Collections.singletonList(ServerAddress("localhost", 27017)))) .credential(credential) .build())
或者,您可以使用显式指定 authMechanism=MONGODB-X509
的连接string :
val mongoClient = MongoClient("mongodb://subjectName@host1/?authMechanism=MONGODB-X509&ssl=true")
请参阅服务器手册中的“使用 x.509 证书对客户端进行身份验证”教程,学习;了解有关在应用程序中使用 x.509 证书的更多信息。