对连接进行身份验证

要向 Snowflake 进行身份验证,您可以使用以下选项之一:

  • 基于密码的身份验证。要使用此功能,请在建立连接时设置 password 选项。

  • 通过 Web 浏览器使用 :ref:` 单点登录 (SSO) <label-nodejs_sso>`。

  • 通过 Okta 使用 :ref:` 原生 SSO <label-nodejs_native_sso>`。

  • 密钥对身份验证

  • OAuth

通过 Web 浏览器使用单点登录 (SSO)

如果您已 将 Snowflake 配置为使用单点登录 (SSO),则可以将客户端应用程序配置为使用基于浏览器的 SSO 进行身份验证。

在应用程序代码中,执行以下操作:

  1. authenticator 选项设置为 EXTERNALBROWSER

  2. 要建立连接,请调用 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({...});
});
Copy

有关使用基于浏览器的 SSO 进行身份验证的更多信息,请参阅 基于浏览器的 SSO

通过 Okta 使用原生 SSO

如果您已 :doc:` 将 Snowflake 配置为使用单点登录 (SSO) </user-guide/admin-security-fed-auth-overview>` (通过 Okta),则可以将客户端应用程序配置为通过 Okta 使用原生 SSO 身份验证。

在应用程序代码中,执行以下操作:

  1. 设置以下选项:

    • authenticator 选项设置为 Okta 账户的 Okta URL 端点(例如 https://<okta_account_name>.okta.com)。

    • usernamepassword 选项设置为身份提供程序 (IdP) 的用户名和密码。

  2. 要建立连接,请调用 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({...});
Copy

有关通过 Okta 使用原生 SSO 身份验证的更多信息,请参阅 原生 SSO – 仅限 Okta

使用密钥对身份验证和密钥对轮换

该驱动程序支持密钥对身份验证和密钥轮换。要使用密钥对身份验证和密钥轮换,请按照以下步骤操作:

  1. 配置密钥对身份验证,如 密钥对身份验证和密钥对轮换 中所述。

  2. 在应用程序代码中,执行以下操作:

    1. authenticator 选项设置为 SNOWFLAKE_JWT

    2. 使用私钥通过以下方式之一进行身份验证:

      • 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({...});
Copy

以下示例将 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({...});
Copy

使用 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({...});
Copy

有关更多信息,请参阅 客户端、驱动程序和连接器

语言: 中文