Docs 菜单
Docs 主页
/ /

Kerberos (GSSAPI) 身份验证

注意

GSSAPI身份验证仅在MongoDB Enterprise版中可用。

通用安全服务API (GSSAPI)身份验证机制允许您使用Kerberos主体名称对为Kerberos身份验证配置的MongoDB 部署进行身份验证。

要从C++驾驶员使用Kerberos ,您的MongoDB 部署必须已配置为Kerberos身份验证,并且您的应用程序托管必须能够获取Kerberos凭证。

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

  • <kerberos_principal>:要进行身份验证的 Kerberos主体。

  • <hostname>:部署中 mongodmongos托管的完全限定域名 (FQDN)。 Kerberos需要使用 FQDN(而不是IP地址或短主机名)来进行正确的域解析。

  • <port>: MongoDB 部署的端口号。如果省略此参数, MongoDB将使用默认端口号 (27017)。

要使用本页上的代码示例,请将这些占位符替换为您自己的值。

注意

当您在MongoDB连接 URI 中嵌入 <kerberos_principal> 时,必须将 @ 字符百分号编码为 %40

在通过C++驾驶员使用Kerberos身份验证机制之前,必须将MongoDB 部署配置为使用Kerberos。要配置部署,请参阅 MongoDB Server MongoDB Server Kerberos文档,并完成其中描述的步骤。

注意

要使用 GSSAPI 进行身份验证,您必须构建支持 SASL 的 MongoDB C 驱动程序。如果从源代码构建驱动程序,则可以使用 ENABLE_SASL cmake 选项启用SASL支持。

配置部署后,请完成以下步骤,使用 GSSAPI 进行身份验证:

1

在 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
2

接下来,设立以下连接选项:

  • 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 ,如前面的示例所示。

要学习有关在C++驱动程序中创建 mongocxx::client对象的详情,请参阅以下API文档:

后退

AWS IAM

在此页面上