Overview
注意
GSSAPI身份验证仅在MongoDB Enterprise版中可用。
通用安全服务API (GSSAPI)身份验证机制允许您使用Kerberos主体名称对为Kerberos身份验证配置的MongoDB 部署进行身份验证。
要从C++驾驶员使用Kerberos ,您的MongoDB 部署必须已配置为Kerberos身份验证,并且您的应用程序托管必须能够获取Kerberos凭证。
代码占位符
本页上的代码示例使用以下占位符:
<kerberos_principal>:要进行身份验证的 Kerberos主体。<hostname>:部署中mongod或mongos托管的完全限定域名 (FQDN)。 Kerberos需要使用 FQDN(而不是IP地址或短主机名)来进行正确的域解析。<port>: MongoDB 部署的端口号。如果省略此参数, MongoDB将使用默认端口号 (27017)。
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
注意
当您在MongoDB连接 URI 中嵌入 <kerberos_principal> 时,必须将 @ 字符百分号编码为 %40。
在应用程序中使用 GSSAPI 身份验证
在通过C++驾驶员使用Kerberos身份验证机制之前,必须将MongoDB 部署配置为使用Kerberos。要配置部署,请参阅 MongoDB Server MongoDB Server Kerberos文档,并完成其中描述的步骤。
注意
要使用 GSSAPI 进行身份验证,您必须构建支持 SASL 的 MongoDB C 驱动程序。如果从源代码构建驱动程序,则可以使用 ENABLE_SASL cmake 选项启用SASL支持。
配置部署后,请完成以下步骤,使用 GSSAPI 进行身份验证:
获取票证授予票证
在 Unix 环境中,必须首先运行kinit命令来获取并缓存初始票证授予票证。 如果您运行的是Windows环境,则可以跳到下一步。
以下示例使用kinit命令获取主体mongodbuser@EXAMPLE.COM的票证授予票证。 然后,它使用klist命令显示凭证缓存中的主体和票证。
kinit mongodbuser@EXAMPLE.COM mongodbuser@EXAMPLE.COM's Password: klist Credentials cache: FILE:/tmp/krb5cc_1000 Principal: mongodbuser@EXAMPLE.COM Issued Expires Principal Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/mongodbuser@EXAMPLE.COM
设置连接选项
接下来,设立以下连接选项:
kerberos_principal:要进行身份验证的Kerberos主体。authMechanism:设置为"GSSAPI"。authMechanismProperties:可选。 默认, MongoDB使用mongodb作为身份验证服务名称。 要指定不同的服务名称,请将此选项设立为"SERVICE_NAME: <authentication service name>"。
您可以通过连接 URI 中的参数设立这些选项,如以下示例所示:
auto uri = mongocxx::uri("mongodb://<kerberos_principal>@<hostname>:<port>/?" "authMechanism=GSSAPI" "&authMechanismProperties=SERVICE_NAME:<authentication service name>"); auto client = mongocxx::client(uri);
注意
您必须将主体中的@符号替换为%40 ,如前面的示例所示。
API 文档
要学习有关在C++驱动程序中创建 mongocxx::client对象的详情,请参阅以下API文档: