企业身份验证机制
在本指南中,您可以找到使用 MongoDB Enterprise 版中提供的每种身份验证机制连接到 MongoDB 的示例代码: Kerberos (GSSAPI/SSPI)
和LDAP (PLAIN)
。
Kerberos (GSSAPI/SSPI)
注意
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 机制。
LDAP (PLAIN)
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 进行身份验证。 。