我有一个需要连接到 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/