2015-04-19 3 views
1

Я использую 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 в фоновом задании?

Спасибо и привет!

ответ

1

Здесь есть идея. Создайте простое приложение консоли или win form, которое запрашивает ваш токен. В этом приложении используйте пользовательский кеш, который сохраняет токены в переносном хранилище (например, зашифрованный файл, см. https://github.com/AzureADSamples/NativeClient-DotNet). Запустите приложение один раз, чтобы засеять кеш. Затем возьмите этот кеш и разверните его вместе со своей веб-работой. Теперь в течение 90 дней вы будете в порядке. Другой альтернативой является использование потоков имени пользователя и пароля, но это редко бывает хорошей идеей, и это влечет за собой множество важных ограничений.

+0

Вопрос об этом заключается в том, что приложение предназначено не только для меня. Мы хотим, чтобы пользователь перешел на веб-сайт «Авторизовать» доступ к своему офису 365. Затем фоновая работа будет делать что-то каждую ночь. Вот почему учетные данные и oauth-процесс должны быть приглашены на веб-сайт, но использование токенов в фоновом задании. Есть идеи? –

+1

Ах, тогда это легко. Просто обменивайтесь кешем токенов между веб-сайтом и фоновым заданием. Acquiretokensilent использует и обновляет токены обновления. Просто возьмите https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet и попробуйте запустить логику в контроллерах в фоновом задании. Важно то, что и веб-сайт, и работа работают с одним и тем же экземпляром кеша. – vibronet

 Смежные вопросы

  • Нет связанных вопросов^_^