автоматического обновления запросов-oauthlib Маркер носителя в потоке учетных данных клиента? - PullRequest
0 голосов
/ 04 ноября 2019

Я использую пакет python reports-oauthlib для подключения к Microsoft Graph. Я использую поток учетных данных клиента OAuth 2.0.

Следующий упрощенный код работает отлично:

from oauthlib.oauth2 import BackendApplicationClient
from requests_oauthlib import OAuth2Session
client = BackendApplicationClient(client_id='myclientid')

token_url = "https://login.microsoftonline.com/mydomain.onmicrosoft.com/oauth2/v2.0/token"
msgraph = OAuth2Session(client=client)

msgraph.fetch_token(
    token_url = token_url,
    client_secret = 'myclientsecret',
    scope='https://graph.microsoft.com/.default')

response = msgraph.get(
    url="https://graph.microsoft.com/v1.0/users/user@mydomain.com/messages")

Пока это работает, токен доступа на предъявителя в этом случае действителен только в течение 1 часа. Пакет запросы-oauthlib имеет поддержку для обновления токенов , но кажется, что он ограничен типами токенов, которые поставляются с отдельными токенами обновления. Поток учетных данных клиента, используемый в Microsoft Graph, выдает только access_token.

Поэтому у меня следующие вопросы:

  1. Есть ли способ сделать так, чтобы запрос-oauthlib обновлял токен автоматически вэтот вариант использования или мне нужно вручную отслеживать возраст моего токена и явно обновлять его по мере необходимости?
  2. Я не привязан к запросу-oauthlib, так что если есть лучшая библиотека, которая выполняет автообновлениеМне было бы интересно использовать его.

1 Ответ

0 голосов
/ 04 ноября 2019

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

Что еще более важно, поскольку поток учетных данных клиента не является интерактивным, нет необходимости обновлять токены. Вы просто запрашиваете новый токен, когда истекает срок действия старого.

...