无法使用windows身份验证获取用于身份验证Azure SQL db的正确令牌

无法使用windows身份验证获取用于身份验证Azure SQL db的正确令牌,azure,asp.net-core,azure-sql-database,Azure,Asp.net Core,Azure Sql Database,我正在尝试使用生成令牌的windows身份验证对Azure SQL db访问的用户进行身份验证。我遵循了博客中指定的方法。下面是代码片段 var conn = (SqlConnection)this.Database.GetDbConnection(); conn.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result; 我面临的问题是

我正在尝试使用生成令牌的windows身份验证对Azure SQL db访问的用户进行身份验证。我遵循了博客中指定的方法。下面是代码片段

var conn = (SqlConnection)this.Database.GetDbConnection();
conn.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;

我面临的问题是代币的生成。确实生成了令牌,但身份验证失败。当我试图解码令牌时,它显示了错误的用户帐户。它没有带走我的公司电子邮件,而是带走了我的一个个人电子邮件id。我到处找,但找不到传递用户名的解决方案。

AzureServiceTokenProvider获取在本地登录VS的帐户的凭据,因此您需要使用正确的帐户登录

在web应用程序中,它使用web应用程序MSI的凭据,您需要设置web应用程序的凭据,并配置MSI(服务主体)的所有权限,如您的用户帐户


有关更多详细信息,请参阅此。

AzureServiceTokenProvider获取在本地登录VS的帐户的凭据,您是否可以确保使用正确的帐户登录?明白。你是对的,我在VS local中使用了不同的帐户。但问题是,它在应用程序服务中也不起作用。因为在web应用程序中,它使用web应用程序MSI的凭据,您需要更改web应用程序的凭据,并配置MSI(服务主体)的所有权限,如您的用户帐户。那就行了。我的评论能解决这个问题吗?很抱歉没有回应,我没有时间测试这个场景。我会确认一下,谢谢王。通过添加服务主体,web应用程序能够连接到SQL db。