Как использовать OAuth в фоновом задании, у которого нет URL

#api #oauth #cron

#API #oauth #cron

Вопрос:

Мы используем некоторый общедоступный API, который разрешает аутентификацию oauth. И у нас есть запланированное задание (cron job), которое выполняется в фоновом режиме без URL.

Я думаю, что настройка сервера, расположенного рядом, — это то, что сработает, но мы бы не хотели этого делать. Может кто-нибудь предложить обходной путь для достижения аутентификации в фоновом задании? Спасибо.

Ответ №1:

Это то, для чего предназначено предоставление учетных данных клиента oauth2. Если у вас есть доступный сервер авторизации, который поддерживает предоставление client_credentials, то это ваш лучший вариант.

Фоновое задание сможет получать токен с сервера авторизации через предоставление client_credentials, используя идентификатор клиента и секрет для аутентификации, и получать токен взамен. Полученный токен затем можно использовать для получения доступа к ресурсу, в данном случае к API.

 POST /token HTTP/1.1
Host: authorization-server.com
 
grant_type=client_credentials
amp;client_id=xxxxxxxxxx
amp;client_secret=xxxxxxxxxx
  

Смотрите, напримерhttps://www.oauth.com/oauth2-servers/access-tokens/client-credentials /

Комментарии:

1. Если мне нужно ввести uri перенаправления для создания клиента OAUTH, что я должен указать?

2. Извините, пропустил тип предоставления, в документе поставщика указано использовать тип предоставления SAML, urn: ietf: params:oauth: grant-type: saml2-bearer,

3. SAML — это другой протокол. Разве поставщик не поддерживает OIDC или OAuth 2.0?

4. Я имею в виду: я не слишком знаком с SAML, процесс может быть немного сложнее с SAML. Поддерживает ли поставщик OpenID Connect или просто OAuth 2.0?

5. Похоже, что нет, им требуется создать клиент с перенаправляющим URL. В любом случае, спасибо за помощь

Ответ №2:

Если для предоставления OAuth требуется авторизация от конечного пользователя, тогда вам нужно будет совместно использовать токен доступа, полученный из потока OAuth, между процессом, который его извлекает (обычно веб-сервер), и процессом, которому он нужен (ваше фоновое задание).

Если вы планируете использовать токен в течение длительных периодов времени, вам, вероятно, понадобится токен обновления, чтобы вы могли получить новый токен доступа без вмешательства пользователя. Для этой цели создаются токены обновления (Google даже вызывает параметр, который вы используете для запроса offline_access ).

Если вы не хотите настраивать сервер для обработки перенаправлений, вы можете использовать управляемый сервис, такой как Xkit. Он управляет взаимодействием с пользователем, и ваше фоновое задание может получить действительный токен доступа только с ключом API. Раскрытие информации: я работаю в Xkit