如何从MSTest c#代码内部获取我的Azure应用程序服务的accessToken



我有API调用的web应用程序(没有UI,只有服务(,我正在编写MSTest项目来测试API。这是我在web应用程序中的AuthConfiguration代码:

public static void ConfigureWebApiAuth(IAppBuilder app){
// User Authentication
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
TokenValidationParameters = UserAuthTokenValidationParameters,
MetadataAddress =   AadApplicationMetadataAddress,
TokenHandler = new JwtSecurityTokenHandler()
});
}
public static TokenValidationParameters UserAuthTokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = AadApplicationClientId,
ValidateIssuer = false,
AuthenticationType = UserContext,
};

如何从MSTest中创建合适的令牌?

我试过了:

AzureServiceTokenProvider localToken = new AzureServiceTokenProvider();
var token = await getTokenProvider().GetAccessTokenAsync("https://xxx.azurewebsites.net");

还有:

AccessToken token =
await new DefaultAzureCredential()
.GetTokenAsync(
new TokenRequestContext(
new[] { "https://xxx.azurewebsites.net/.default" }
));

它只适用于https://storage.azure.com/,https://vault.azure.net/,等等,而不是使用我的应用程序服务url。我得到错误:

参数:连接字符串:[未指定连接字符串],资源:https://xxxxx.azurewebsites.net,授权:。尝试了以下3种方法来获取访问令牌,但都没有他们奏效了。尝试使用托管服务标识获取令牌。通道无法获取令牌。尝试对无法访问的网络。异常消息:尝试使用Visual获取令牌演播室无法获取访问令牌。视觉异常Studio令牌提供程序Microsoft.Asal.TokenService.exe:TS003:错误,TS004:无法获取访问令牌。'无法刷新访问令牌"异常消息:尝试使用Azure CLI获取令牌。访问令牌无法获取。'az’未被识别为内部或外部命令、可操作程序或批处理文件。

代码中的scope/resource不正确。还有一篇文章让你理解。

var azureServiceTokenProvider = new AzureServiceTokenProvider();
string apiToken = await azureServiceTokenProvider.GetAccessTokenAsync("your API's client id/app id or App ID URI");

使用v2.0端点时,应添加作用域/.default

最新更新