authentication - 对于 token 标识主体,应用服务托管标识与 Azure SQL 数据库登录的连接失败

标签 authentication azure-sql-database blazor-server-side azure-managed-identity

应用服务开发、暂存和生产部署槽以及 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

走过https://social.technet.microsoft.com/wiki/contents/articles/53928.azure-ad-managed-identity-connecting-azure-web-app-and-slots-with-azure-sql-db-without-credentials.aspx以及许多其他教程。

仍然缺少一些东西......

尝试使用托管身份连接字符串运行应用程序始终失败,并出现 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/

相关文章:

azure - AZURE 中的多维立方体

database - Azure SQL 数据库会自动升级到新的服务级别吗?

asp.net-core - 升级到预览版 6 后 Blazor 子应用程序 404 错误

authentication - 如何使用 Identity Server 授权 Blazor WebAssembly SPA 应用程序

javascript - SPA 具有 Angular 和基于 cookie 的身份验证

php - Codeigniter - session 数据未通过数组保存在数据库中

azure - 如何在 ARM 模板中打开 Azure SQL 数据库的审核和威胁检测?

blazor - 如何将 Blazor Razor 类库中的 css/js 文件注入(inject)到 ASP.NET Core Blazor 项目

c# - 使用 Azure Active Directory 的 Blazor Server 聊天应用程序在 Program.cs 中产生异常

class - Yii2 在 afterLogin() 方法中包含函数?