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 机制
注意
MongoDB不再支持已弃用的MongoDB挑战-响应 (MONGODB-CR)身份验证机制。如果您的部署将用户凭证存储在 MONGODB-CR模式中,则必须升级到基于 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 的代码如下所示:
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 身份验证
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 的代码如下所示:
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 身份验证
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 的代码如下所示:
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 文档
要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: