对连接进行身份验证¶
要向 Snowflake 进行身份验证,您可以使用以下选项之一:
基于密码的身份验证。要使用此功能,请在建立连接时设置
password
选项。通过 Web 浏览器使用 :ref:` 单点登录 (SSO) <label-nodejs_sso>`。
通过 Okta 使用 :ref:` 原生 SSO <label-nodejs_native_sso>`。
通过 Web 浏览器使用单点登录 (SSO)¶
如果您已 将 Snowflake 配置为使用单点登录 (SSO),则可以将客户端应用程序配置为使用基于浏览器的 SSO 进行身份验证。
在应用程序代码中,执行以下操作:
将
authenticator
选项设置为EXTERNALBROWSER
。要建立连接,请调用
connectAsync
方法,而不是connect
方法。
例如:
// Use a browser to authenticate via SSO.
var connection = snowflake.createConnection({
...,
authenticator: "EXTERNALBROWSER"
});
// Establish a connection. Use connectAsync, rather than connect.
connection.connectAsync(
function (err, conn)
{
... // Handle any errors.
}
).then(() =>
{
// Execute SQL statements.
var statement = connection.execute({...});
});
有关使用基于浏览器的 SSO 进行身份验证的更多信息,请参阅 基于浏览器的 SSO。
通过 Okta 使用原生 SSO¶
如果您已 :doc:` 将 Snowflake 配置为使用单点登录 (SSO) </user-guide/admin-security-fed-auth-overview>` (通过 Okta),则可以将客户端应用程序配置为通过 Okta 使用原生 SSO 身份验证。
在应用程序代码中,执行以下操作:
设置以下选项:
将
authenticator
选项设置为 Okta 账户的 Okta URL 端点(例如https://<okta_account_name>.okta.com
)。将
username
和password
选项设置为身份提供程序 (IdP) 的用户名和密码。
要建立连接,请调用
connectAsync
方法,而不是connect
方法。
例如:
// Use native SSO authentication through Okta.
var connection = snowflake.createConnection({
...,
username: '<user_name_for_okta>',
password: '<password_for_okta>',
authenticator: "https://myaccount.okta.com"
});
// Establish a connection.
connection.connectAsync(
function (err, conn)
{
... // Handle any errors.
}
);
// Execute SQL statements.
var statement = connection.execute({...});
有关通过 Okta 使用原生 SSO 身份验证的更多信息,请参阅 原生 SSO – 仅限 Okta。
使用密钥对身份验证和密钥对轮换¶
该驱动程序支持密钥对身份验证和密钥轮换。要使用密钥对身份验证和密钥轮换,请按照以下步骤操作:
配置密钥对身份验证,如 密钥对身份验证和密钥对轮换 中所述。
在应用程序代码中,执行以下操作:
将
authenticator
选项设置为SNOWFLAKE_JWT
。使用私钥通过以下方式之一进行身份验证:
将
privateKey
选项设置为私钥。将
privateKeyPath
选项设置为私钥文件的路径。如果文件已加密,还必须将
privateKeyPass
选项设置为密码以解密私钥。
以下示例从文件加载私钥并将
privateKey
选项设置为私钥:// Read the private key file from the filesystem. var crypto = require('crypto'); var fs = require('fs'); var privateKeyFile = fs.readFileSync('<path_to_private_key_file>/rsa_key.p8'); // Get the private key from the file as an object. const privateKeyObject = crypto.createPrivateKey({ key: privateKeyFile, format: 'pem', passphrase: 'passphrase' }); // Extract the private key from the object as a PEM-encoded string. var privateKey = privateKeyObject.export({ format: 'pem', type: 'pkcs8' }); // Use the private key for authentication. var connection = snowflake.createConnection({ ... authenticator: "SNOWFLAKE_JWT", privateKey: privateKey }); // Establish a connection. connection.connect( function (err, conn) { ... // Handle any errors. } ); // Execute SQL statements. var statement = connection.execute({...});以下示例将
privateKeyPath
选项设置为加密的私钥文件,并将privateKeyPass
选项设置为用于解密私钥的密码:// Use an encrypted private key file for authentication. // Specify the passphrase for decrypting the key. var connection = snowflake.createConnection({ ... authenticator: "SNOWFLAKE_JWT", privateKeyPath: "<path-to-privatekey>/privatekey.p8", privateKeyPass: '<passphrase_to_decrypt_the_private_key>' }); // Establish a connection. connection.connect( function (err, conn) { ... // Handle any errors. } ); // Execute SQL statements. var statement = connection.execute({...});
使用 OAuth¶
要使用 OAuth 进行连接,请将 authenticator
选项设置为 OAUTH
,将 token
选项设置为 OAuth 访问令牌。例如:
// Use OAuth for authentication.
var connection = snowflake.createConnection({
...
authenticator: "OAUTH",
token: "<your_oauth_token>"
});
// Establish a connection.
connection.connect(
function (err, conn)
{
... // Handle any errors.
}
);
// Execute SQL statements.
var statement = connection.execute({...});
有关更多信息,请参阅 客户端、驱动程序和连接器。