有没有人通过 AAD 成功连接 SQL 服务器 - NodeJS 项目的托管身份?

Have anyone successfully connected SQL Server through AAD - Managed identity for NodeJS project?

我从 Microsoft 文档中找到了示例代码,但它似乎不起作用。 如果有人有任何有用的见解。

另外一个广泛的问题是这是否可能。 由于NodeJS使用了Tedious库,所以不清楚Tedious是否支持AAD连接

示例代码取自:https://docs.microsoft.com/en-us/azure/azure-sql/database/connect-query-nodejs?tabs=windows

它有代码示例,类型为:azure-active-directory-msi-app-service,我认为应该可以。

我得到的错误是 'Security token could not be authenticated or authorized.'

托管身份用户已添加到资源中,具有权限

在 sql 服务器中为主要用户添加 'reader' 角色后代码正常工作。

通过 AAD 连接 SQL 服务器所需的步骤 - NodeJS 项目的托管标识如下:

  1. 在 Azure 资源中使用 sql-server 数据库创建 sql-server。

  2. 在同一个 azure 资源中创建一个 azure-web 应用程序。

  3. 在网络应用程序中创建主要用户。 这可以通过转至 azure web 应用 > 设置 > 身份菜单 > 系统分配选项卡并打开开关 来完成。

  4. 在 sql-db 中创建与步骤 3 中创建的主要用户同名的用户。名称与 web-app 相同.

同时为用户分配 db_reader、db_writer 和 ddladmin 角色。

您可以使用以下脚本创建用户并为其分配角色。 (如果它无法创建用户,需要考虑的一件事是,您可能需要重命名应用程序服务名称,因为在我的情况下,它不允许我创建用户说它已经存在)。

**CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];**
  1. 将reader 角色添加到sql 服务器中的主要用户。 (我错过的那个)。

这可以通过转到 Sql 服务器资源(在 Azure 中)> 访问控制 (IAM) 来完成

Select Reader 和 select member/user(具有应用程序名称的主用户),并将角色 reader 分配给user/member.

  1. 完成所有这些配置部分后,使用 Microsoft 文档中的代码。对我来说,较低的节点版本无法正常工作,因此需要升级节点版本。(在我的情况下为 14)。

https://docs.microsoft.com/en-us/azure/azure-sql/database/connect-query-nodejs?tabs=windows

另外只有在部署版本中连接成功。

希望对您有所帮助!! :)