Я использую Azure Active Directory и ADAL для взаимодействия с Exchange EWS Office 365 с OAuth.AcquireToken() from Background Job
Я знаю, что вы можете использовать authContext.AcquireToken()
, и он будет управлять всеми oauth для вас. Он будет сохранять, использовать и обновлять токены для вас, а также запрашивать учетные данные пользователя, когда это необходимо. В моем случае проблема заключается в том, что мне нужно взаимодействие в фоновом веб-проекте Azure, поэтому он не сможет запросить учетные данные пользователя.
Что я пытался получить код авторизации, чтобы пользователь заходил на URL-адрес от GetAuthorizationRequestURL()
. Затем получите токен с помощью AcquireTokenByAuthorizationCode()
и сохраните токен обновления в базе данных. Поэтому, когда фоновое задание необходимо подключиться к EWS, он может использовать токен обновления (сохраненный в Db) с помощью AcquireTokenByRefreshToken()
.
Этот подход работает, но я не знаю, как вы можете получить новый токен обновления, когда он истечет через 14 дней.
Любая идея о том, как я могу обновить токен обновления или лучше использовать ADAL в фоновом задании?
Спасибо и привет!
Вопрос об этом заключается в том, что приложение предназначено не только для меня. Мы хотим, чтобы пользователь перешел на веб-сайт «Авторизовать» доступ к своему офису 365. Затем фоновая работа будет делать что-то каждую ночь. Вот почему учетные данные и oauth-процесс должны быть приглашены на веб-сайт, но использование токенов в фоновом задании. Есть идеи? –
Ах, тогда это легко. Просто обменивайтесь кешем токенов между веб-сайтом и фоновым заданием. Acquiretokensilent использует и обновляет токены обновления. Просто возьмите https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet и попробуйте запустить логику в контроллерах в фоновом задании. Важно то, что и веб-сайт, и работа работают с одним и тем же экземпляром кеша. – vibronet