保护您的数据
本页内容
概述
MongoDB 支持多种机制,您可以使用这些机制来验证您的应用程序。此页面包含代码示例,展示了每种机制。
要从此页面使用认证示例,请将代码示例复制到示例应用程序或您自己的应用程序中。确保在代码示例中替换所有占位符,例如<hostname>
,使用 MongoDB 部署的相关值。
示例应用程序
您可以使用以下示例应用程序来测试此页面上的代码示例。要使用示例应用程序,请执行以下步骤
确保您已安装 PyMongo。
复制以下代码,并将其粘贴到一个新的
.py
文件中。从此页面复制代码示例,并将其粘贴到文件中指定的行。
1 from pymongo import MongoClient 2 3 try: 4 # start example code here 5 6 # end example code here 7 8 client.admin.command("ping") 9 print("Connected successfully") 10 11 # other application code 12 13 client.close() 14 15 except Exception as e: 16 raise Exception( 17 "The following error occurred: ", e)
SCRAM-SHA-256
client = pymongo.MongoClient("mongodb://<hostname>:<port>", username="<db_username>", password="<db_password>", authSource="<authentication database>", authMechanism="SCRAM-SHA-256")
uri = ("mongodb://<percent-encoded username>:<percent-encoded password>" "@<hostname>:<port>/?" "authSource=<authentication database>" "&authMechanism=SCRAM-SHA-256") client = pymongo.MongoClient(uri)
要了解更多关于 SCRAM-SHA-256 认证的信息,请参阅认证指南中的SCRAM-SHA-256。
SCRAM-SHA-1
client = pymongo.MongoClient("mongodb://<hostname>:<port>", username="<db_username>", password="<db_password>", authSource="<authentication database>", authMechanism="SCRAM-SHA-1")
uri = ("mongodb://<percent-encoded username>:<percent-encoded password>" "@<hostname>:<port>/?" "authSource=<authentication database>" "&authMechanism=SCRAM-SHA-1") client = pymongo.MongoClient(uri)
要了解更多关于 SCRAM-SHA-1 认证的信息,请参阅认证指南中的SCRAM-SHA-1。
MONGODB-X509
client = pymongo.MongoClient("mongodb://<hostname>:<port>", tls=True, tlsCertificateKeyFile="/path/to/client.pem", authMechanism="MONGODB-X509")
uri = ("mongodb://<hostname>:<port>/?" "tls=true" "&tlsCertificateKeyFile=path/to/client.pem" "&authMechanism=MONGODB-X509") client = pymongo.MongoClient(uri)
要了解更多关于 MONGODB-X509 认证的信息,请参阅认证指南中的MONGODB-X509。
mongodb-aws
MongoClient
凭证
client = pymongo.MongoClient("mongodb://<hostname>:<port>", username="<AWS IAM access key ID>", password="<AWS IAM secret access key>", authMechanism="MONGODB-AWS")
uri = ("mongodb://<percent-encoded AWS IAM access key ID>:" "<percent-encoded AWS IAM secret access key>" "@<hostname>:<port>/?" "&authMechanism=MONGODB-AWS") client = pymongo.MongoClient(uri)
要了解有关使用 AWS MongoClient
凭证进行身份验证的更多信息,请参阅身份验证指南中的 MongoClient
凭证。
环境变量
client = pymongo.MongoClient("mongodb://<hostname>:<port>", authMechanism="MONGODB-AWS")
uri = "mongodb://<hostname>:<port>/?&authMechanism=MONGODB-AWS" client = pymongo.MongoClient(uri)
要了解有关使用 AWS 环境变量进行身份验证的更多信息,请参阅身份验证指南中的 环境变量。
共享凭证文件
client = pymongo.MongoClient("mongodb://<hostname>:<port>", authMechanism="MONGODB-AWS")
uri = "mongodb://<hostname>:<port>/?&authMechanism=MONGODB-AWS" client = pymongo.MongoClient(uri)
要了解更多关于使用共享AWS凭证文件进行身份验证的信息,请参阅身份验证指南中的共享凭证文件。
AWS配置文件
client = pymongo.MongoClient("mongodb://<hostname>:<port>", authMechanism="MONGODB-AWS")
uri = "mongodb://<hostname>:<port>/?&authMechanism=MONGODB-AWS" client = pymongo.MongoClient(uri)
要了解更多关于使用AWS配置文件进行身份验证的信息,请参阅身份验证指南中的AWS配置文件。
AssumeRole请求
client = pymongo.MongoClient("mongodb://@<hostname>:<port>", username="<AWS IAM access key ID>", password="<AWS IAM secret access key>", authMechanismProperties="AWS_SESSION_TOKEN:<AWS session token>", authMechanism="MONGODB-AWS")
uri = ("mongodb://<percent-encoded AWS IAM access key ID>:" "<percent-encoded AWS IAM secret access key>" "@<hostname>:<port>/?" "authMechanismProperties=AWS_SESSION_TOKEN:<AWS session token>" "&authMechanism=MONGODB-AWS") client = pymongo.MongoClient(uri)
要了解更多关于使用AssumeRole
请求进行身份验证的信息,请参阅身份验证指南中的AssumeRole请求。
使用Web身份假设角色
client = pymongo.MongoClient("mongodb://<hostname>:<port>", authMechanism="MONGODB-AWS")
uri = "mongodb://<hostname>:<port>/?&authMechanism=MONGODB-AWS" client = pymongo.MongoClient(uri)
要了解有关使用AssumeRoleWithWebIdentity
请求进行认证的更多信息,请参阅认证指南中的AssumeRoleWithWebIdentity。
ECS容器或EC2实例
client = pymongo.MongoClient("mongodb://<hostname>:<port>", authMechanism="MONGODB-AWS")
uri = "mongodb://<hostname>:<port>/?&authMechanism=MONGODB-AWS" client = pymongo.MongoClient(uri)
要了解有关从ECS容器进行认证的更多信息,请参阅认证指南中的ECS容器或EC2实例。
Kerberos
注意
仅MongoDB企业版
Kerberos认证仅在MongoDB企业版中可用。
Unix
client = pymongo.MongoClient("mongodb://<hostname>:<port>", username="mongodbuser@EXAMPLE.COM", authMechanism="GSSAPI", authMechanismProperties="SERVICE_NAME:<authentication service name>")
uri = ("mongodb://mongodbuser%40EXAMPLE.COM@<hostname>:<port>/?" "&authMechanism=GSSAPI" "&authMechanismProperties=SERVICE_NAME:<authentication service name>") client = pymongo.MongoClient(uri)
要了解更多关于使用 Kerberos 进行身份验证的信息,请参阅企业身份验证指南中的 Kerberos。
Windows
client = pymongo.MongoClient("mongodb://<hostname>:<port>", username="<db_username>", authMechanism="GSSAPI", password="<db_password>", authMechanismProperties="SERVICE_NAME:<authentication service name>, CANONICALIZE_HOST_NAME:true, SERVICE_REALM:<service realm>")
uri = ("mongodb://<percent-encoded username>:<percent-encoded user password>" "@<hostname>:<port>/?" "&authMechanism=GSSAPI" "&authMechanismProperties=" "SERVICE_NAME:<authentication service name>," "CANONICALIZE_HOST_NAME:true," "SERVICE_REALM:<service realm>") client = pymongo.MongoClient(uri)
要了解更多关于使用 Kerberos 进行身份验证的信息,请参阅企业身份验证指南中的 Kerberos。
PLAIN SASL
注意
仅MongoDB企业版
PLAIN SASL 身份验证仅在 MongoDB 企业版中可用。
client = pymongo.MongoClient("mongodb://<hostname>:<port>", username="<db_username>", password="<db_password>", authMechanism="PLAIN", tls=True)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "&authMechanism=PLAIN" "&tls=true") client = pymongo.MongoClient(uri)
要了解更多关于使用 PLAIN SASL 进行身份验证的信息,请参阅企业身份验证指南中的 PLAIN SASL。
mongodb-oidc
注意
仅MongoDB企业版
mongodb-oidc 认证仅在 MongoDB Enterprise 中可用。
Azure IMDS
from pymongo import MongoClient # define properties and MongoClient properties = {"ENVIRONMENT": "azure", "TOKEN_RESOURCE": "<audience>"} client = MongoClient( "mongodb://<hostname>:<port>", username="<Azure client ID or application ID>", authMechanism="MONGODB-OIDC", authMechanismProperties=properties )
from pymongo import MongoClient # define URI and MongoClient uri = ("mongodb://<hostname>:<port>/?" "username=<Azure client ID or application ID>" "&authMechanism=MONGODB-OIDC" "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>") client = MongoClient(uri)
要了解更多关于使用 OIDC 进行认证的信息,请参阅认证指南中的 Azure IMDS。
GCP IMDS
from pymongo import MongoClient # define properties and MongoClient properties = {"ENVIRONMENT": "gcp", "TOKEN_RESOURCE": "<audience>"} client = MongoClient( "mongodb://<hostname>:<port>", authMechanism="MONGODB-OIDC", authMechanismProperties=properties )
from pymongo import MongoClient # define URI and MongoClient uri = ("mongodb://<hostname>:<port>/?" "&authMechanism=MONGODB-OIDC" "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<percent-encoded audience>") client = MongoClient(uri)
要了解更多关于使用 OIDC 进行认证的信息,请参阅认证指南中的 GCP IMDS。
其他Azure环境
from pymongo import MongoClient from azure.identity import DefaultAzureCredential from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult # define callback, properties, and MongoClient audience = "<audience>" client_id = "<Azure client ID>" class MyCallback(OIDCCallback): def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: credential = DefaultAzureCredential(managed_identity_client_id=client_id) token = credential.get_token(f"{audience}/.default").token return OIDCCallbackResult(access_token=token) properties = {"OIDC_CALLBACK": MyCallback()} client = MongoClient( "mongodb://<hostname>:<port>", authMechanism="MONGODB-OIDC", authMechanismProperties=properties )
要了解有关使用OIDC进行身份验证的更多信息,请参阅认证指南中的其他Azure环境。
GCP GKE
from pymongo import MongoClient from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult # define callback, properties, and MongoClient class MyCallback(OIDCCallback): def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: with open("/var/run/secrets/kubernetes.io/serviceaccount/token") as fid: token = fid.read() return OIDCCallbackResult(access_token=token) properties = {"OIDC_CALLBACK": MyCallback()} client = MongoClient( "mongodb://<hostname>:<port>", authMechanism="MONGODB-OIDC", authMechanismProperties=properties )
要了解有关使用OIDC进行身份验证的更多信息,请参阅认证指南中的GCP GKE。