Я использую пример кода аутентификации 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);
};
Как эти учетные данные будут добавлены в кеш без входа в систему, как это происходит, когда они кэшируются в браузере?