文档菜单
文档首页
/ / /
C#/.NET
/ /

Kerberos (GSSAPI)

本页内容

  • 概述
  • 代码占位符
  • 在您的应用程序中使用GSSAPI身份验证
  • 其他属性
  • API文档

通用安全服务API (GSSAPI) 身份验证机制允许您使用主体名称对Kerberos服务进行身份验证。您只能在验证到MongoDB企业高级版时使用此机制。

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

  • <username>:您的URL编码 主名称。例如:"username%40REALM.ME"

  • <password>:您的Kerberos用户密码。

  • <hostname>:您的MongoDB部署的网络地址。

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

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

您可以通过使用MongoCredential对象或将Kerberos凭据作为连接字符串的一部分来指定GSSAPI身份验证机制。连接字符串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初始化了keytab。

您可以在连接字符串或您的 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);

以下示例展示了如何在用户领域与服务的领域不同时指定用户的领域。将 <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 文档

返回

LDAP (PLAIN)