Docs 菜单
Docs 主页
/ / /
Node.js
/ /

企业身份验证机制

在此页面上

  • Kerberos (GSSAPI/SSPI)
  • LDAP (PLAIN)

在本指南中,您可以找到使用 MongoDB Enterprise 版中提供的每种身份验证机制连接到 MongoDB 的示例代码: Kerberos (GSSAPI/SSPI)LDAP (PLAIN)

注意

Node.js 驱动程序在 UNIX 上使用 MIT Kerberos 库支持 Kerberos,在 Windows 上使用 SSPI API 支持 Kerberos。

GSSAPI身份验证机制使用您的用户主体对 Kerberos 服务进行身份验证。

连接string上指定选项时,可以通过执行以下操作来指定此身份验证机制:

  • authMechanism参数设置为GSSAPI

  • 如果使用mongodb以外的值,请在authMechanismProperties参数中设置SERVICE_NAME值。

  • 如果需要自定义服务域,请在authMechanismProperties参数中指定SERVICE_REALM值。

  • 如果需要对主机名进行规范化,请在authMechanismProperties参数中指定CANONICALIZE_HOST_NAME值。 此属性可以采用以下值:

    • none:(默认)不执行主机名规范化

    • forward:执行正向 DNS 查找以规范化主机名

    • forwardAndReverse:执行正向 DNS 查找,然后对该值执行反向查找以规范化主机名

重要

gssapiServiceName参数已弃用,可能会在驱动程序的未来版本中删除。 请在连接 URI 中使用authMechanismProperties=SERVICE_NAME:<your service name> 。 有关更多信息,请参阅authMechanismProperties参数文档。

以下代码示例使用GSSAPI对 Kerberos for UNIX 进行身份验证。

重要

始终使用encodeURIComponent方法对主体进行URI 编码,以确保对其进行正确解析。

const { MongoClient } = require("mongodb");
// specify the placeholder values for your environment in the following lines
const clusterUrl = "<MongoDB cluster URL>";
const principal = encodeURIComponent("<Kerberos principal and realm>");
const serviceRealm = "<Kerberos service realm>";
const canonicalizationSetting = "<canonicalization setting>";
const authMechanismProperties = `SERVICE_REALM:${serviceRealm},CANONICALIZE_HOST_NAME:${canonicalizationSetting}`;
const authMechanism = "GSSAPI";
// Connection URI
const uri = `mongodb+srv://${principal}@${clusterUrl}/?authMechanism=${authMechanism}&authMechanismProperties=${authMechanismProperties}`;
const client = new MongoClient(uri);
// Function to connect to the server
async function run() {
try {
// Establish and verify connection
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server");
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
run().catch(console.dir);

注意

该方法引用GSSAPI 身份验证机制而不是Kerberos ,因为驱动程序通过 GSSAPI RFC-4652 进行身份验证。 SASL 机制。

PLAIN身份验证机制使用您的用户名和密码对轻量级目录访问协议 (LDAP) 服务器进行身份验证。

您可以通过将authMechanism 参数设置为PLAIN 并在LDAP 连接string 中包含 用户名和密码来指定此身份验证机制,如以下示例代码所示。

const { MongoClient } = require("mongodb");
// specify the placeholder values for your environment in the following lines
const clusterUrl = "<MongoDB cluster URL>";
const ldapUsername = "<LDAP username>";
const ldapPassword = "<LDAP password>";
const authMechanism = "PLAIN";
// Connection URI
const uri = `mongodb+srv://${ldapUsername}:${ldapPassword}@${clusterUrl}/?authMechanism=${authMechanism}`;
const client = new MongoClient(uri);
// Function to connect to the server
async function run() {
try {
// Establish and verify connection
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server");
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
run().catch(console.dir);

注意

身份验证机制名为PLAIN 而不是LDAP ,因为它使用 RFC- 中定义的 PLAIN 简单身份验证和安全层 (SASL)4616 进行身份验证。 。

后退

身份验证机制