“文档” 菜单
文档首页
/ / /
Go 驱动程序
/

身份验证机制

在此页面上

  • 概述
  • 支持的机制
  • 示例规则
  • 默认
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • MONGODB-AWS
  • X.509

在本指南中,可以了解如何使用 MongoDB Community Edition 中提供的每种身份验证机制。MongoDB 使用身份验证机制来确认身份并建立信任,确保连接之前驱动程序和服务器的安全。

要使用 GSSAPI/KerberosLDAP进行身份验证,请参阅企业身份验证机制基础知识页面。要了解有关建立与 MongoDB 集群连接的更多信息,请参阅连接指南。

Go 驱动程序支持以下身份验证机制:

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MONGODB-AWS

  • x.509

Go 驱动程序通过一个 Client 类型与身份验证机制建立连接。Client 类型指定了在 Credential 类型中用作连接选项的机制和凭证。若要配置这些选项,请将 Credential 类型传递给 ClientOptions 类型的 SetAuth() 方法。

以下部分将通过 MongoDB Community Edition 支持的五种机制来演示这一过程。

每种身份验证机制都包含以下占位符:

  • username - 您的 MongoDB 用户名

  • password — 您的 MongoDB 用户密码

  • hostname - 您的 MongoDB 服务器网络地址(可由您的客户访问)

  • port - 您的 MongoDB Server 端口号

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

默认机制使用以下身份验证机制之一, 具体取决于服务器支持的 MongoDB 版本:

机制
版本
SCRAM-SHA-256
MongoDB 4.0 及更高版本
SCRAM-SHA-1
MongoDB 3.0、3.2、3.4 和 3.6
MONGODB-CR
MongoDB 2.6 及更早版本

如需指定默认身份验证机制,请省略 AuthMechanism 选项:

credential := options.Credential{
AuthSource: "<authenticationDb>",
Username: "<username>",
Password: "<password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

如要进一步了解有关 MongoDB 支持的质询-响应 (CR) 和 salted 质询-响应身份验证机制 (SCRAM) ,请参阅 server 手册的 SCRAM 部分。

重要

SCRAM-SHA-256 是从 MongoDB 4.0 开始使用的 MongoDB 默认身份验证方法。

SCRAM-SHA-256 是一种挑战-响应身份验证机制 (SCRAM),使用通过 SHA-256 算法加密的用户名和密码来验证用户身份。

要指定 SCRAM-SHA-256 身份验证机制,请为 AuthMechanism 选项指定值 "SCRAM-SHA-256"

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-256",
AuthSource: "<authenticationDb>",
Username: "<username>",
Password: "<password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

重要

SCRAM-SHA-1 是 MongoDB 版本 3.0、3.2、3.4 和 3.6 的默认身份验证方法。

SCRAM-SHA-1 是一种盐化质询-响应机制 (SCRAM),它使用您的用户名和密码,并使用 SHA-1 算法加密,来对您的用户进行身份验证。

要指定 SCRAM-SHA-1 身份验证机制,请为 AuthMechanism 选项指定值 "SCRAM-SHA-1"

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-1",
AuthSource: "<authenticationDb>",
Username: "<username>",
Password: "<password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

MONGODB-CR 是一种挑战-响应身份验证机制,它使用您的用户名和密码 来验证您的用户。

重要

从 MongoDB 3.6 开始,这种身份验证机制已被弃用, 从 MongoDB 4.0 开始不再支持。

重要

MONGODB-AWS 身份验证机制仅适用于 MongoDB 4.4 及更高版本。

MONGODB-AWS 身份验证机制使用 Amazon Web Services Identity and Access Management (AWS IAM) 档案对用户进行身份验证。

要连接到启用了 MONGODB-AWS 身份验证的 MongoDB 实例,请指定 MONGODB-AWS 身份验证机制。

该驱动程序会按列出的顺序在以下来源中检查是否存在档案:

  1. 连接字符串

  2. 环境变量

  3. 网络身份令牌文件

  4. 环境变量 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 中指定的 AWS ECS 端点

  5. AWS EC2 端点。有关更多信息,请参阅针对任务的 IAM 角色

重要

驱动程序仅从找到档案的第一个来源获取档案。 例如,如果在连接字符串中指定 AWS 档案, 驱动程序将忽略您在环境变量中指定的任何档案。

X.509 身份验证机制使用 TLS 以及 X.509 证书对用户进行身份验证,并由客户端证书的相对标识名 (RDN) 进行标识。当您指定 X.509 身份验证机制时,服务器将使用以下文件的路径对连接进行身份验证:

  • tlsCAFile 其中包含在建立 TLS 连接时要信任的单个或一组证书颁发机构

  • tlsCertificateKeyFile ,它会引用客户端证书文件或客户端私钥文件的路径

如需指定 X.509 身份验证机制,请执行以下操作:

  • 在连接字符串中为 tlsCAFile 指定文件路径

  • 在连接字符串中为 tlsCertificateKeyFile 指定文件路径

  • AuthMechanism 选项指定值 "MONGODB-X509"

caFilePath := "<cafile_path>"
certificateKeyFilePath := "<client_certificate_path>"
uri := "mongodb://<hostname>:<port>/?tlsCAFile=%s&tlsCertificateKeyFile=%s"
uri = fmt.Sprintf(uri, caFilePath, certificateKeyFilePath)
credential := options.Credential{
AuthMechanism: "MONGODB-X509",
}
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)
← 上下文