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进行身份验证。
代码占位符
本页上的代码示例使用以下占位符:
+srv
:仅当您连接到MongoDB Atlas 群集时,才在连接字符串前缀中包含此选项。 要学习;了解有关+srv
选项的更多信息,请参阅MongoDB Server手册中的连接字符串格式。<db_username>
:要进行身份验证的用户的MongoDB用户名。<db_password>
:要进行身份验证的用户的MongoDB密码。<hostname>
: MongoDB 部署的网络解决。<port>
: MongoDB 部署的端口号。 如果省略此参数,驾驶员将使用默认端口号 (27017
)。 连接MongoDB Atlas 群集时无需端口号。<authenticationDb>
:包含用户身份验证数据的 MongoDB 数据库。 如果省略此参数,驾驶员将使用默认值admin
。<authenticationMechanism>
:设置为SCRAM-SHA-1
或SCRAM-SHA-256
。
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
重要
百分比编码
您必须 对 用户名和密码,然后再将其包含在 MongoDB URI 中。quote_plus()
方法,可在 urllib.parse 模块,是执行此任务的一种方法。例如,调用 quote_plus("and / or")
会返回string and+%2F+or
。
将用户名或密码作为参数传递给MongoClient
时,不要对用户名或密码进行百分号编码。
在应用程序中使用SCRAM身份验证
要使用SCRAM进行身份验证,请将 authMechanism
连接选项设立为 SCRAM-SHA-1
或 SCRAM-SHA-256
。 您可以通过两种方式设立此选项:将参数传递给 MongoClient
构造函数,或通过连接字符串中的参数。
client = pymongo.MongoClient("mongodb[+srv]://<hostname>:<port>", username="<db_username>", password="<db_password>", authSource="<authenticationDb>", authMechanism="<authenticationMechanism>")
uri = ("mongodb[+srv]://<percent-encoded db_username>:<percent-encoded db_password>" "@<hostname>:<port>/?" "authSource=<authenticationDb>" "&authMechanism=<authenticationMechanism>") client = pymongo.MongoClient(uri)
API 文档
要了解有关在 PyMongo 中对应用程序进行身份验证的更多信息,请参阅以下 API 文档: