#c# #azure #oauth #adal
#c# #azure #oauth #adal
Вопрос:
Я изучаю библиотеку аутентификации Active Directory (ADAL) с помощью консольного приложения. И говорят, что после извлечения токена с использованием oauth полученный токен кэшируется для того же имени ресурса, идентификатора клиента и пользователя, вошедшего в систему ранее. Хотя это отлично работает в собственном приложении Win8.1, мне не удается заставить его работать с консольным приложением.
Ниже приведен код, который я использую для получения токена:
AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/{tenantGUID}/", false);
var result = authContext.AcquireToken(APPResourceName, clientGUID, redirectUri, PromptBehavior.Auto);
Предположительно, быстрое поведение.Предполагается, что Auto запрашивает пользователя только тогда, когда такой токен не кэшируется в Azure, и, как я уже сказал, это отлично работает в собственном приложении Win8.1. Также я заметил, что интерфейс приглашения (пользовательский интерфейс входа) немного отличается при запросе от собственного Win8.1 (версия пользовательского интерфейса для настольных компьютеров) и консольное приложение (версия пользовательского интерфейса для мобильных устройств), это нормально?
Может ли кто-нибудь указать, почему это не работает в обычном консольном приложении?
Ответ №1:
Кэш токенов находится в памяти только для приложений .net, поскольку не существует известного места для записи по умолчанию. Кэш предоставляет перехваты делегирования для чтения и записи данных в выбранное вами хранилище. Я полагаю, что в собственных приложениях win 8.1 вы имели в виду приложения для хранения, кэш сохраняется в хранилище приложения, которое изолировано и защищено от других процессов.
Ответ №2:
Насколько я знаю, токены хранятся в локальном / сеансовом хранилище (веб-браузер), консольное приложение не может хранить токен таким образом (изначально, конечно). Может быть, есть обходной путь или что-то в этом роде. UWP от Microsoft может полагаться на многие технологии, такие как JS, если это ваш случай, он будет использовать технологию, подобную браузеру, где вы можете сохранить свой токен.