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

企业身份验证机制

在此页面上

  • 概述
  • 进行身份验证以访问 GSSAPI/Kerberos
  • 例子
  • 设置自定义 SERVICE_NAMESERVICE_REALM字段
  • LDAP 身份验证 (PLAIN)
  • 例子
  • 更多信息
  • API 文档

在本指南中,您可以了解如何使用 MongoDB Enterprise Edition 提供的身份验证机制在 MongoDB 中进行身份验证。身份验证机制是驱动程序和服务器在连接之前确认客户端身份以确保安全的过程。

您可以在最新版本的 MongoDB Enterprise Edition 中使用以下身份验证机制:

  • GSSAPI/Kerberos

  • LDAP(普通)

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

您可以使用以下方法在连接到 MongoDB 时指定身份验证机制和凭证:

  • 使用连接字符串 URI。要了解有关使用连接字符串 URI 进行企业身份验证的更多信息,请参阅关于连接字符串 URI 的服务器手册条目

  • Credential类型指定凭证和身份验证机制。

通用安全服务 API (GSSAPI) 身份验证机制允许用户使用其主体对 Kerberos 服务进行身份验证。

如要使用 Kerberos 身份验证,您必须使用 gssapi 构建标签并在编译时指定 cgo 支持cgo 支持默认处于启用状态,除非您之前将环境变量设置为交叉编译到其他平台。如要使用 gssapi 构建标签,请使用以下命令编译代码:

go build -tags gssapi

此示例使用以下占位符指定身份验证机制:

  • username: Your Kerberos principal. 示例用户名是myuser@KERBEROS.EXAMPLE.COM

  • password:Kerberos 用户的密码。 您还可以将密码存储在keytab文件中,避免在代码中暴露密码。

  • connection uri:您的连接字符串 URI。

以下代码演示如何定义 Credential 结构以向 Kerberos 进行身份验证,以及如何使用您的身份验证首选项创建客户端:

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<username>",
Password: "<password>",
PasswordSet: true,
}
uri := "<connection uri>"
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

如果您将身份验证密钥存储在 keytab 文件中,则无需在 Credential 结构体中定义密码或 PasswordSet 字段。可以初始化凭证缓存,以便使用 kinit 二进制文件对 Kerberos 主体进行身份验证。要了解有关 kinit 二进制的更多信息,请参阅 Oracle 文档

以下命令显示如何为示例用户名调用凭证缓存:

kinit myuser@KERBEROS.EXAMPLE.COM

您也可以使用连接字符串 URI 进行身份验证,指定您的 URL 编码 Kerberos 主体、密码和hostname,即 MongoDB 服务器的网络地址:

uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=GSSAPI"

您可以使用Credential结构中的 AuthMechanismProperties 字段在身份验证机制中指定其他属性。Kerberos 的默认服务名称是“mongodb”。以下代码展示了如何在定义Credential结构时为 SERVICE_NAMESERVICE_REALM 字段设置自定义值:

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<username>",
Password: "<password>",
AuthMechanismProperties: map[string]string{
"SERVICE_REALM": "<Kerberos service realm>",
"SERVICE_NAME": "<service name>",
},
}

有关其他属性,请参阅服务器手册中有关身份验证属性的条目。

您可以使用目录服务器用户名和密码向轻量级目录访问协议 (LDAP) 服务器进行身份验证。

警告

此身份验证机制以明文形式将密码发送到服务器,因此仅对 TLS 连接使用此机制。

此示例使用以下占位符指定身份验证机制:

  • username:您的 LDAP 用户名

  • password:您的 LDAP 密码

  • connection uri:您的连接字符串 URI

以下代码演示如何定义 Credential 结构以向 LDAP 进行身份验证,以及如何使用您的身份验证首选项创建客户端:

credential := options.Credential{
AuthMechanism: "PLAIN",
Username: "<username>",
Password: "<password>",
}
uri := "<connection uri>"
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

您也可以使用连接字符串 URI 进行身份验证,指定您的 LDAP 用户名、密码和 hostname,即 MongoDB 服务器的网络地址:

uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=PLAIN"

注意

该方法为 PLAIN 而不是 LDAP,因为它使用 RFC-4616 定义的 PLAIN 简单身份验证和安全层 (SASL) 进行身份验证。

要了解有关本指南中概念的更多信息,请参阅以下文档:

← 身份验证机制