Проверка подлинности приложения-демона для файлов OneDrive

#python #azure #microsoft-graph-api #onedrive

Вопрос:

У меня есть учетная запись пользователя OneDrive для бизнеса в крупной организации. Я бы хотел, чтобы была запущена демоническая служба (Python), которая автоматически загружает файлы в OneDrive этого пользователя.

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

Каковы мои варианты аутентификации этого приложения, чтобы оно могло записывать данные в OneDrive пользователя? Я зарегистрировал приложение и создал для него секрет клиента. Я экспериментировал с описанным здесь потоком авторизации, но этот SDK устарел и больше не поддерживается, поэтому я бы предпочел использовать Graph, если это возможно.

Каковы мои варианты аутентификации с помощью Python в этом сценарии и доступен ли какой-либо пример кода / примера?

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

1. Ха, для Microsoft Graph нет Python SDK. Возможно, вам придется напрямую вызвать REST API

2. Да, Microsoft есть Microsoft, они, похоже, решили сосредоточиться почти исключительно на C#.

Ответ №1:

В MS Graph API поддерживаются как делегированные, так и прикладные разрешения: https://docs.microsoft.com/en-us/graph/api/drive-list?view=graph-rest-1.0amp;tabs=http. Разрешения приложений могут быть неприемлемыми для вашего варианта использования, поскольку они разрешают доступ ко всем устройствам OneDrives пользователей?

Разрешения для приложений, безусловно, были бы самым простым выбором. Но вы также можете реализовать этот сценарий, используя делегированные разрешения, которые понадобятся пользователю для инициализации процесса путем однократной интерактивной аутентификации. Когда они это сделают, сохраните маркер обновления в секретном хранилище, доступном серверному приложению. Затем он может использовать токен обновления, чтобы при необходимости получить новый токен обновления токен доступа. Этот подход несколько сложнее, но позволяет предоставлять доступ только к OneDrive этого пользователя для приложения.

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

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

1. Это тот подход, с которым я в конечном итоге согласился. Я нашел документацию от Microsoft, в которой говорится, что при каждом использовании маркера обновления создается новый маркер обновления, поэтому вы можете обновлять его бесконечно. Итак, я настроил запланированное задание, которое обновляет токен каждые несколько часов и хранит новый токен обновления в секрете, чтобы мои приложения могли затем получить его и использовать, всегда будучи уверенными, что он действителен.