对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

SCRAM 身份验证

Salted 挑战响应身份验证机制 (SCRAM) 是一系列身份验证机制,它们使用质询-响应机制对用户进行身份验证。SCRAM-SHA-256(使用 SHA-256算法对密码进行哈希处理)是MongoDB Server 4.0 及更高版本中的默认身份验证机制。 SCRAM-SHA-1 改用 SHA-1算法,是早于 4.0 的MongoDB Server版本中的默认身份验证机制。

您可以使用SCRAM对MongoDB Atlas、 MongoDB Enterprise Advanced和MongoDB Community Edition进行身份验证。

提示

SCRAM 机制

要学习;了解有关SCRAM系列身份验证机制的更多信息,请参阅 维基百科上的 RFC5802 Salted 挑战响应身份验证机制。

有关SCRAM的MongoDB实施的更多信息,请参阅MongoDB Server手册中的SCRAM 。

注意

MongoDB不再支持已弃用的MongoDB挑战-响应 (MONGODB-CR)身份验证机制。如果您的部署将用户凭证存储在 MONGODB-CR模式中,则必须升级到基于 SCRAM 的机制。

本页上的代码示例使用以下占位符:

  • <db_username>:要进行身份验证的用户的MongoDB用户名。

  • <db_password>:要进行身份验证的用户的MongoDB密码。

  • <hostname>: MongoDB 部署的网络解决。

  • <port>: MongoDB 部署的端口号。如果省略此参数,驱动程序将使用默认端口号 (27017)。连接MongoDB Atlas 集群时无需端口号。

  • <authenticationDb>:包含用户身份验证数据的 MongoDB 数据库。如果省略此参数,驱动程序将使用默认值 admin

要使用代码示例,请将这些占位符替换为您自己的值。

要使用默认的SCRAM机制对MongoDB用户进行身份验证,请指定您的MongoDB凭证,但不要指定身份验证机制。选择下面的 Connection StringMongoCredential标签页,查看相应语法的说明和示例代码:

要使用连接字符串默认身份验证机制,请忽略该机制。 用于实例化 MongoClient 的代码类似于以下内容:

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");

要使用 MongoCredential 类默认默认身份验证机制,请使用 createCredential() 方法。用于实例化 MongoClient 的代码如下所示:

String user = "<db_username>"; // the user name
String source = "<authenticationDb>"; // the source where the user is defined
char[] password = "<db_password>".toCharArray(); // the password as a character array
// ...
MongoCredential credential = MongoCredential.createCredential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", "<port>"))))
.credential(credential)
.build());

有关MongoDB支持的SCRAM机制的更多信息,请参阅MongoDB Server手册的SCRAM部分。

SCRAM-SHA-256 是从MongoDB 4.0 开始的MongoDB的默认身份验证方法,但此代码示例演示了如何显式使用此机制。选择Connection StringMongoCredential标签页,查看指定此身份验证机制的说明和示例代码:

要使用连接字符串指定 SCRAM-SHA-256身份验证机制,请在连接字符串中为 authMechanism 参数分配值 SCRAM-SHA-256。 用于实例化 MongoClient 的代码如下所示:

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");

要使用 MongoCredential 类指定 SCRAM-SHA-256身份验证机制,请使用 createScramSha256Credential() 方法。用于实例化 MongoClient 的代码如下所示:

String user = "<db_username>"; // the user name
String source = "<authenticationDb>"; // the source where the user is defined
char[] password = "<db_password>".toCharArray(); // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha256Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", "<port>"))))
.credential(credential)
.build());

SCRAM-SHA-1 是早于 4.0 的MongoDB版本的默认身份验证方法,但此代码示例演示了如何显式使用此机制。选择Connection StringMongoCredential标签页,查看指定此身份验证机制的说明和示例代码:

要使用连接字符串指定 SCRAM-SHA-1身份验证机制,请在连接字符串中为 authMechanism 参数分配值 SCRAM-SHA-1。 用于实例化 MongoClient 的代码如下所示:

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");

要使用 MongoCredential 类指定 SCRAM-SHA-1身份验证机制,请使用 createScramSha1Credential() 方法。用于实例化 MongoClient 的代码如下所示:

String user = "<db_username>"; // the user name
String source = "<authenticationDb>"; // the source where the user is defined
char[] password = "<db_password>".toCharArray(); // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha1Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", "<port>"))))
.credential(credential)
.build());

要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: