【发布时间】:2021-06-21 02:32:40
【问题描述】:
我有用于 API 调用的网络应用程序(没有 UI,只有服务),我正在编写 MSTest 项目来测试 API。 这是我在网络应用程序代码中的 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' 未被识别为内部或 外部命令、可运行程序或批处理文件。
【问题讨论】:
-
您通过以与应用程序相同的方式登录 API 来创建用于测试的令牌。没有(或不应该)有一个“神奇”的令牌可以正常工作。您应该使用用户名/密码/凭据创建一个“测试”帐户,并使用它来登录,生成令牌。
-
我不能使用用户分配的托管标识吗?我创建了一个并将其添加到我的网络应用程序的“身份”选项卡中。
-
如果您使用的是 v2.0 端点,则范围应为
{your_client_id}/.default。可以试试吗?
标签: c# azure access-token bearer-token azure-managed-identity