Почему ConfidentialClientApplication.GetAccountsAsync периодически возвращает ноль? - PullRequest
0 голосов
/ 01 марта 2019

Я использую пример кода аутентификации Azure AD Open ID connect для аутентификации моего веб-приложения ASP.Net Core.

Стандартный поток аутентификации работает безупречно, но когда я пытаюсь получить JWT через службу получения токенавызов GetAccountAsync, а затем GetAccountsAsync не может вернуть учетную запись.

Сумасшедшая часть заключается в том, что она не всегда завершается ошибкой.

В Edge, если учетные данные кэшируются и я не вхожу в системуGetAccountAsync не может вернуть учетную запись.Если учетные данные не кэшируются, и я вхожу в систему, GetAccountAsync возвращает учетную запись.

Что может вызвать это?

Я заметил, что при кэшировании учетных данных OnAuthorizationCodeReceived не получен и учетная запись добавленав кеш здесь.

var handler = options.Events.OnAuthorizationCodeReceived;
options.Events.OnAuthorizationCodeReceived = async context =>
{
    var _tokenAcquisition = context.HttpContext.RequestServices.GetRequiredService<ITokenAcquisition>();
    await _tokenAcquisition.AddAccountToCacheFromAuthorizationCode(context, options.Scope);
    await handler(context);
};

Как эти учетные данные будут добавлены в кеш без входа в систему, как это происходит, когда они кэшируются в браузере?

...