node.js - 使用 'ms-rest-nodeauth' 刷新服务主体身份验证的访问 token

标签 node.js azure azure-active-directory sequelize.js service-principal

我有一个需要连接到 Azure SQL Server 并使用 Sequelize 作为 ORM 的应用程序。我正在尝试通过使用服务主体进行身份验证来使解决方案更安全。我正在使用模块 @azure/ms-rest-nodeauth 获取访问 token 并将其传递给我的数据库初始化程序中的 Sequelize。
函数“loginWithServicePrincipalSecret”通过传递 SPN 凭据来获取访问 token 。

const sequelize = new Sequelize({
      database: AZURE_SQL_DB,
      host: AZURE_SQL_SERVER,
      dialect: 'mssql',
      logging: true,
      dialectOptions: {
        authentication: {
          type: 'azure-active-directory-access-token',
          options: {
            token: accessToken,
          },
        }
      }
    })
问题是,虽然这可以建立连接,但访问 token 会在 1 小时后过期。这会破坏解决方案,因为它一直在监听新请求并且 token 将过期。
有没有办法“刷新” token ,或者可能有一些优雅的方式来处理获取新 token ?

最佳答案

发布我最终用于解决方案的内容。
Tedious 支持身份验证类型“azure-active-directory-service-principal-secret”,它在后台使用@azure/ms-rest-nodeauth 方法并处理身份验证。

{
  database: AZURE_SQL_DB,
  host: AZURE_SQL_SERVER,
  dialect: 'mssql',
  logging: true,
  dialectOptions: {
    authentication: {
      type: 'azure-active-directory-service-principal-secret',
      options: {
        clientId: AZURE_CLIENT_ID,
        tenantId: AZURE_TENANT_ID,
        clientSecret: AZURE_CLIENT_SECRET,
      },
    },
  },
};

关于node.js - 使用 'ms-rest-nodeauth' 刷新服务主体身份验证的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66337370/

相关文章:

python - 从 NodeJS 调用 Python 函数

azure - 无法使用用户分配的标识从 Azure Key Vault 获取 secret

azure - 如何在 Web 应用程序中将端口 6006 重定向到端口 80?

authentication - 如何实现Office 365 OAuth2登录认证的跨域请求?

azure - 如何在测试代码中以用户身份登录 Azure Active Directory?

azure - 从 Azure Runbook 创建 Azure AD 用户

node.js - 比较字段值的 Mongoose 查询

node.js - 使用 Node.js 集群模块在不同用户下 fork 一个工作线程?

javascript - 从 YouTube 缩略图抓取调色板

Azure 函数 host.json 以某种方式被忽略