Overview
Salted 挑战响应身份验证机制 (SCRAM) 是一系列身份验证机制,它们使用挑战-响应机制对用户进行身份验证。SCRAM-SHA-256(使用 SHA-256算法对密码进行哈希处理)是MongoDB服务器版本 4.0 及更高版本中的默认身份验证机制。
您可以使用SCRAM对MongoDB Atlas、 MongoDB Enterprise Advanced和MongoDB Community Edition进行身份验证。
提示
SCRAM 机制
要学习;了解有关SCRAM系列身份验证机制的更多信息,请参阅 Wikipedia 上的 RFC5802 和 Salted 挑战响应身份验证机制。
有关SCRAM的MongoDB实施的更多信息,请参阅MongoDB服务器手册中的SCRAM 。
代码占位符
本页上的代码示例使用以下占位符:
db_username- 您的MongoDB 数据库用户名。db_password- 您的MongoDB 数据库用户的密码。hostname— 可供客户端访问的 MongoDB Server 的网络地址。port— MongoDB Server的端口号。authenticationDb— 包含用户的身份验证数据的 MongoDB 数据库。如果省略此参数,驱动程序则会使用默认值admin。
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
使用SCRAM-SHA-256 进行身份验证
选择下面的 Connection String 或 MongoCredential标签页,查看说明和示例代码,以指定SCRAM-SHA-256身份验证机制。
要使用连接字符串默认身份验证机制,请忽略该机制。 用于实例化 MongoClient 的代码应类似于以下内容:
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>")
要使用 MongoCredential 类默认身份验证机制,请使用 createCredential() 方法。 用于实例化 MongoClient 的代码应类似于以下内容:
val credential = MongoCredential.createCredential( "<db_username>", "<authenticationDb>", "<db_password>".toCharArray() ) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<hostname>", "<port>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
您还可以显式指定 SCRAM-SHA-256身份验证机制,如以下代码片段所示:
要使用连接字符串指定 SCRAM-SHA-256身份验证机制,请在连接字符串中为 authMechanism 参数分配值 SCRAM-SHA-256。 用于实例化 MongoClient 的代码应类似于以下内容:
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256")
要使用 MongoCredential 类默认身份验证机制,请使用 createScramSha256Credential() 方法。用于实例化 MongoClient 的代码应类似于以下内容:
val credential = MongoCredential.createScramSha256Credential( "<db_username>", "<authenticationDb>", "<db_password>".toCharArray() ) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<hostname>", "<port>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)