У меня есть веб-приложение для вызовов API (без пользовательского интерфейса, только служба), и я пишу проект 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 метода получить токен доступа, но ни один из них не помог. Пытался получить токен с помощью Managed Service Identity. Не удалось получить токен доступа. Попытка выполнить операцию сокета в недоступной сети. Сообщение об исключении: попытка получить токен с помощью Visual Studio. Не удалось получить токен доступа. Исключение для поставщика токенов Visual Studio Microsoft.Asal.TokenService.exe: TS003: ошибка, TS004: невозможно получить токен доступа. Сообщение об исключении «Не удалось обновить токен доступа»: попытка получить токен с помощью Azure CLI. Не удалось получить токен доступа. 'az' не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
{your_client_id}/.default
. Не могли бы вы попробовать? - person Pamela Peng   schedule 25.03.2021