如何使用应用服务服务主体连接到 Azure SQL 数据库?

问题描述 投票:0回答:1

我无法使用 Active Directory 集成身份验证让我的服务连接到数据库。

我有一个在 Linux 上运行的应用程序服务和一个在同一区域运行的 SQL Server 实例/数据库。应用服务具有系统分配的托管标识以及数据库的 SQL DB 贡献者角色。我有一个虚拟网络,并配置了通过 vnet 对 SQL Server 实例的访问,并将应用服务与 vnet 集成。

sql 实例提供了一个示例连接字符串,如下所示:

Server=tcp:foo.database.windows.net,1433;Initial Catalog=foo-db;Persist Security Info=False;User ID={your_username};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Integrated";

我不确定我应该使用什么来

User ID
。起初我只是尝试忽略它,假设集成身份验证能够推断出服务主体,但事实证明它不能(可能是因为我在 Linux 虚拟机上运行,或者可能总是需要提供用户) ).

我再次尝试使用对象 ID 作为应用程序服务的系统分配的托管标识。这也不起作用:

无法在 Active Directory 中对用户 190c6dd1-6b34-4181-b6b2-f9da12d7d8fc 进行身份验证 (Authentication=ActiveDirectoryIntegrated)。错误代码 0xunknown_user_type 不支持的用户类型“未知”

那么,如何在连接字符串中为我的应用程序服务提供系统分配的身份的用户?

azure azure-web-app-service azure-sql-database azure-entra-id
1个回答
0
投票

我希望在这里应用使用 Microsoft Entra 身份验证和 SqlClient 连接到 Azure SQL§使用托管身份验证的指导,特别是使用

Authentication=Active Directory Managed Identity
并完全删除用户名:

Server=tcp:foo.database.windows.net,1433;Authentication=Active Directory Managed Identity;Initial Catalog=foo-db;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;
© www.soinside.com 2019 - 2024. All rights reserved.