Overview
通用安全服务API (GSSAPI)身份验证机制允许使用主体名称对Kerberos服务进行身份验证。 只有在向MongoDB Enterprise Advanced进行身份验证时才能使用此机制。
代码占位符
本页上的代码示例使用以下占位符:
kerberos_principal
: Your Kerberos principal. 示例用户名是myuser@KERBEROS.EXAMPLE.COM
。password
:Kerberos 用户的密码。 您还可以将密码存储在keytab
文件中,避免在代码中暴露密码。connection_uri
:您的连接字符串 URI。
指定Kerberos (GSSAPI) 身份验证
要使用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"
设置自定义 SERVICE_NAME 和 SERVICE_REALM 字段
您可以使用 Credential
结构中的 AuthMechanismProperties
字段通过身份验证机制指定更多属性。Kerberos的默认服务名称是“ MongoDB”。 以下代码展示了如何在定义 Credential
结构体时为 SERVICE_NAME
和 SERVICE_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 文档
要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: