Тайм-аут ADAL [AquireTokenAsync] при работе в WebAPI в прокси-сети компании - PullRequest
1 голос
/ 24 мая 2019

Мы столкнулись с очень странной проблемой с библиотекой Azure AD в приложении веб-API asp.net.Когда мы пытаемся получить токен с помощью AcquireTokenAsync с сертификатом, ответа нет, а затем время ожидания.

Причудливая часть:

Если мы копируем один и тот же код в консольное приложение, консольное приложение работает, немедленно получает токен.

, если мы используем fiddler для запуска прокси, который обгоняетПрокси-сервер нашей компании по умолчанию, приложение webapi работает.

Используемый нами код тестирования в точности соответствует документации.

Пример используемого нами кода:

public async Task < string > GetTokenAsync() {

    var context = new AuthenticationContext(authority);

    var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

    store.Open(OpenFlags.ReadOnly);

    var results = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);

    var cert = new ClientAssertionCertificate(clientid, results[0]);

    var token = await context.AcquireTokenAsync(resource, cert).AccessToken;

    return token;

}

В основном коддолжен работать должным образом, поскольку это непосредственно из документации.это что-то относительно сети?

Ошибка, которую мы получаем вкратце:

в System.Web.Http.Results.ExceptionResult..ctor (Исключение исключений, зависимости IDependencyProvider) в System.Web.Http.ApiController.InternalServerError (Исключение исключения) в WebApplication1.Controllers.TokenController.d__0.MoveNext () в C: \ Users \ QiaoH \ source \ repos \ WebApplication1 \ WebApplication1 \ Controllers \ TokenController.cs: строка 55 --- Трассировка конца стека отпредыдущее местоположение, в котором было сгенерировано исключение в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) в System.Threading.Tasks.xte.Exception.HasКонец трассировки стека от предыдущего местоположения, в котором было сгенерировано исключение в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) в System.WebControAp.llerActionInvoker.d__1.MoveNext () --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача Task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAgnoDestificationSystem.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext () Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в System.Runtime.CompilerServices.ebserSDWNA(Задача) в System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext ()

1 Ответ

0 голосов
/ 27 мая 2019

Проблема решена:

Из-за прокси мы должны включить прокси по умолчанию с учетными данными по умолчанию.

Мы помещаем ниже в web.config, и это работает.

    <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="true">
        </defaultProxy>
    </system.net>
...