Kerberos (GSSAPI)
Overview
通用安全服务API (GSSAPI)身份验证机制允许使用主体名称对Kerberos服务进行身份验证。只有在向MongoDB Enterprise Advanced进行身份验证时才能使用此机制。
代码占位符
本页上的代码示例使用以下占位符:
<username>
:您的 URL编码的 主体名称。示例:"username%40REALM.ME"
<password>
: Kerberos用户的密码。<hostname>
: MongoDB 部署的网络解决。<port>
: MongoDB 部署的端口号。如果省略此参数,驾驶员将使用默认端口号 (27017
)。
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
在应用程序中使用 GSSAPI 身份验证
您可以指定 GSSAPI
凭证身份验证机制,并通过使用 MongoCredential
对象或作为连接字符串的一部分提供Kerberos档案。选择 Connection String 或 MongoCredential标签页,查看相应的语法:
var mongoClient = new MongoClient( "mongodb://<username>:<password>@<hostname>[:<port>]/?authMechanism=GSSAPI");
var credential = MongoCredential.CreateGssapiCredential("<username>", "<password>"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
提示
省略密码
如果满足以下任一条件,则可以省略密码参数:
在 Windows 上,运行应用程序的进程所有者与需要身份验证的用户相同。
在 Linux 上,用户已通过
kinit username@REALM.COM
初始化其密钥表。
additionalProperties
您可以在连接字符串或 MongoCredential
对象中包含以下 GSSAPI 配置选项。
完全限定域名
以下示例显示如何使用 DNS 服务器检索主机的完全限定域名:
var mongoClient = new MongoClient( "mongodb://<username>:<password>@<hostname>[:<port>]/?authMechanism=GSSAPI&" + "authMechanismProperties=CANONICALIZE_HOSTNAME:true");
var credential = MongoCredential.CreateGssapiCredential("<username>", "<password>"); credential = credential.WithMechanismProperty("CANONICALIZE_HOST_NAME", "true"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
Realm
以下示例展示了当用户的域与服务的 Realm 不同时如何指定该域 。将 <user's realm>
占位符替换为Kerberos用户的域 。
var mongoClient = new MongoClient( "mongodb://<username>:<password>@<hostname>[:<port>]/?authMechanism=GSSAPI&" + "authMechanismProperties=SERVICE_REALM:<user's realm>");
var credential = MongoCredential.CreateGssapiCredential("<username>", "<password>"); credential = credential.WithMechanismProperty("SERVICE_REALM", "<user's realm>"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
服务名称
以下示例展示了当服务名称不是默认mongodb
时如何指定该名称。将 <service name>
占位符替换为服务名称。
var mongoClient = new MongoClient( "mongodb://<username>:<password>@<hostname>[:<port>]/?authMechanism=GSSAPI&" + "authMechanismProperties=SERVICE_NAME:<service name>");
var credential = MongoCredential.CreateGssapiCredential("<username>", "<password>"); credential = credential.WithMechanismProperty("SERVICE_NAME", "<service name>"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
多个属性
以下示例显示如何指定多个身份验证机制属性:
var mongoClient = new MongoClient( "mongodb://<username>:<password>@<hostname>[:<port>]/?authMechanism=GSSAPI&" + "authMechanismProperties=SERVICE_NAME:<service name>,SERVICE_REALM:<user's realm>");
var credential = MongoCredential.CreateGssapiCredential("<username>", "<password>"); credential = credential .WithMechanismProperty("SERVICE_REALM", "<user's realm>") .WithMechanismProperty("SERVICE_NAME", "<service name>"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
API 文档
要学习;了解有关本页讨论的任何方法或类型的更多信息,请参阅以下API文档: