Overview
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 机制
代码占位符
本页上的代码示例使用以下占位符:
<db_username>
:要进行身份验证的用户的MongoDB用户名。<db_password>
:要进行身份验证的用户的MongoDB密码。<hostname>
: MongoDB 部署的网络解决。<port>
: MongoDB 部署的端口号。 如果省略此参数,驾驶员将使用默认端口号 (27017
)。 连接MongoDB Atlas 群集时无需端口号。<authenticationDb>
:包含用户身份验证数据的 MongoDB 数据库。 如果省略此参数,驾驶员将使用默认值admin
。
要使用代码示例,请将这些占位符替换为您自己的值。
指定默认SCRAM身份验证机制
要使用默认的SCRAM机制对MongoDB用户进行身份验证,请指定您的MongoDB凭证,但不要指定身份验证机制。选择下面的 Connection String 或 MongoCredential标签页,查看相应语法的说明和示例代码:
要使用连接字符串默认身份验证机制,请忽略该机制。 用于实例化 MongoClient
的代码类似于以下内容:
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
要使用 MongoCredential
类默认默认身份验证机制,请使用 createCredential()
方法。用于实例化 MongoClient
的代码如下所示:
MongoCredential credential = MongoCredential.createCredential("<db_username>", "<authenticationDb>", "<db_password>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
如需进一步了解 MongoDB 支持的质询-响应(CR)和 Salted 质询-响应身份验证机制 (SCRAM),请参阅 MongoDB Server 手册的 SCRAM 部分。
指定SCRAM-SHA-256 身份验证
SCRAM-SHA-256
是从MongoDB 4.0 开始的MongoDB的默认身份验证方法,但此代码示例演示了如何显式使用此机制。选择Connection String或MongoCredential标签页,查看指定此身份验证机制的说明和示例代码:
要使用连接字符串指定 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
的代码如下所示:
MongoCredential credential = MongoCredential.createScramSha256Credential("<db_username>", "<authenticationDb>", "<db_password>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
指定SCRAM-SHA-1 身份验证
SCRAM-SHA-1
是早于 4.0 的MongoDB版本的默认身份验证方法,但此代码示例演示了如何显式使用此机制。选择Connection String或MongoCredential标签页,查看指定此身份验证机制的说明和示例代码:
要使用连接字符串指定 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
的代码如下所示:
MongoCredential credential = MongoCredential.createScramSha1Credential("<db_username>", "<authenticationDb>", "<db_password>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
API 文档
要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: