Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Go 驱动程序
/ /

Kerberos (GSSAPI) 身份验证机制

通用安全服务API (GSSAPI)身份验证机制允许使用主体名称对Kerberos服务进行身份验证。 只有在向MongoDB Enterprise Advanced进行身份验证时才能使用此机制。

本页上的代码示例使用以下占位符:

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

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

  • connection_uri:您的连接字符串 URI。

要使用Kerberos身份验证,必须使用 gssapi 构建标签 并在编译期间指定 cgo支持。除非您之前设立环境变量以交叉编译到不同的平台,否则默认启用 cgo支持。要使用 gssapi构建标签,请使用以下命令编译代码:

go build -tags gssapi

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

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

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

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

kinit myuser@KERBEROS.EXAMPLE.COM

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

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

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

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<kerberos_principal>",
Password: "<password>",
AuthMechanismProperties: map[string]string{
"SERVICE_REALM": "<kerberos_service_realm>",
"SERVICE_NAME": "<service_name>",
},
}

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

要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档:

后退

LDAP (Plain)

在此页面上