azure-active-directory - Azure 函数托管标识到 Azure Sql - 用户登录失败'
问题描述
我有一个 C# dotnet core 3.1 Azure Function App(名为 func-utrngen-dev-001),我想将其配置为通过托管标识对 Sql Azure 数据库进行身份验证。
采取的步骤:
为 sql server 帐户创建了 AAD 管理员
使用该帐户打开与 sql server 的连接
运行以下命令以创建与 azure function app 同名的“包含用户”
从外部提供者创建用户 [func-utrngen-dev-001]
更改角色 db_datareader 添加成员 [func-utrngen-dev-001]
更改角色 db_datawriter 添加成员 [func-utrngen-dev-001]
确保在 Sql Server\Security\Firewalls 和虚拟网络 blas 下的 Azure 门户中将“允许 Azure 服务和资源访问此服务器”设置为“是”
确保在函数应用的身份刀片上将系统分配\状态设置为“打开”
当函数应用尝试进行身份验证时,我收到以下错误:
用户“<token-identified principal>”登录失败
因此,我安装了 Microsoft 的“MSI Validator”工具并运行了此处描述的步骤。我从 Kudu 会话的 Powershell 窗口运行以下命令:
./msi-validator.exe test-connection -r sql -e "数据源=sql-utrngen-dev-001.database.windows.net;初始目录=utrngen;"
它成功获得了一个令牌,但随后失败并出现与我的函数应用程序相同的错误:
无法连接到 SQL。异常:用户“<token-identified principal>”登录失败
- 我运行了 select * FROM sys.fn_get_audit_file(path to tsql audit blob) 但结果只显示我的帐户中的活动登录到 SSMS
接下来我应该尝试什么?
解决方案
解决方法是为数据库提供正确的名称 ♂️。欲速则不达
推荐阅读
- hibernate - 如何在 Spring Boot JPA 中加入两个表,我的代码出错了
- spring - com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2009 using Sprint Boot with JMS (IBM MQ)
- android - 如何使表格宽度足够大以适合其内容
- wpf - 使用 Prism 的 Wpf 中模块之间的 ApplicationCommands 问题
- javascript - React JS:无法读取子组件中未定义的属性“dataTransfer”
- android - Laravel 和 Android 与 MySQL 数据库
- git - 压缩的 Git 合并导致分支不同步
- styled-components - CSS 浏览器与样式组件的兼容性
- google-cloud-platform - 如何将 AMI 迁移到 GCP
- javascript - 在与 if 语句相同的行上初始化临时变量