应用服务开发、暂存和生产部署槽以及 SQL 数据库都具有系统分配的托管标识。 贡献者角色已分配给订阅级别的托管身份。
已创建 SQL Server 包含的用户并为应用服务开发、登台和生产槽分配角色: SQL Server Contained Users
appsettings.json 连接字符串: connectionStrings
AD DB 管理员用户已创建并作为包含用户添加到 SQLServer。
已将 dB1 和 dB2 的 AppService 托管身份的权限添加到 SQL Server AppService Managed Identity Permissions
msi-validator 返回从 Web 应用程序到同一 SQL Server 实例上两个不同数据库的基于 token 的连接成功。 msi-validator success
本地和 Azure 部署槽均返回:SQLException Login failed for token-identified principal
仍然缺少一些东西......
尝试使用托管身份连接字符串运行应用程序始终失败,并出现 token 提供者主体登录失败错误。
确认设置: Confirmation of Settings
最佳答案
请确保在 Azure SQL 数据库上创建 Azure Active Directory 用户。请按照上述步骤在 Azure SQL 数据库中创建用户 here .
要创建基于 Azure AD 的包含数据库用户,请以至少具有 ALTER ANY USER 权限的用户身份使用 Azure AD 标识连接到数据库。然后使用以下 Transact-SQL 语法:
CREATE USER <Azure_AD_principal_name> FROM EXTERNAL PROVIDER;
CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dcbeb3be9cbfb3b2a8b3afb3f2bfb3b1" rel="noreferrer noopener nofollow">[email protected]</a>] FROM EXTERNAL PROVIDER;
CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="482924212b2d082e292a3a2123292566272625212b3a273b272e3c662b2725" rel="noreferrer noopener nofollow">[email protected]</a>] FROM EXTERNAL PROVIDER;
确保您连接到 Azure SQL 数据库,而不是 Azure SQL 逻辑服务器上的主数据库。
关于authentication - 对于 token 标识主体,应用服务托管标识与 Azure SQL 数据库登录的连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74450065/