Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описано, как добавить проверку подлинности только для приложений в приложение, созданное в разделе Создание приложений Python с помощью Microsoft Graph и проверки подлинности только для приложений.
Клиентская библиотека удостоверений Azure для Python предоставляет множество TokenCredential классов, реализующих потоки маркеров OAuth2.
Пакет SDK Microsoft Graph для Python (предварительная версия) использует эти классы для проверки подлинности вызовов Microsoft Graph.
Настройка клиента Graph для проверки подлинности только для приложений
В этом разделе вы используете ClientSecretCredential класс для запроса маркера доступа с помощью потока учетных данных клиента.
Откройте graph.py и замените все его содержимое следующим кодом.
from configparser import SectionProxy from azure.identity.aio import ClientSecretCredential from msgraph import GraphServiceClient from msgraph.generated.users.users_request_builder import UsersRequestBuilder class Graph: settings: SectionProxy client_credential: ClientSecretCredential app_client: GraphServiceClient def __init__(self, config: SectionProxy): self.settings = config client_id = self.settings['clientId'] tenant_id = self.settings['tenantId'] client_secret = self.settings['clientSecret'] self.client_credential = ClientSecretCredential(tenant_id, client_id, client_secret) self.app_client = GraphServiceClient(self.client_credential) # type: ignoreЭтот код объявляет два частных свойства:
ClientSecretCredentialобъект иGraphServiceClientобъект . Функция__init__создает новый экземплярClientSecretCredential, а затем использует его для создания нового экземпляраGraphServiceClient. Каждый раз, когда вызов API выполняется к Microsoft Graph черезapp_client, он использует предоставленные учетные данные для получения маркера доступа.Добавьте следующую функцию в graph.py.
async def get_app_only_token(self): graph_scope = 'https://graph.microsoft.com/.default' access_token = await self.client_credential.get_token(graph_scope) return access_token.tokenЗамените пустую
display_access_tokenфункцию в main.py на следующую.async def display_access_token(graph: Graph): token = await graph.get_app_only_token() print('App-only token:', token, '\n')Выполните сборку и запуск приложения. Введите
1при появлении запроса на выбор параметра. Приложение отображает маркер доступа.Python Graph App-Only Tutorial Please choose one of the following options: 0. Exit 1. Display access token 2. List users 3. Make a Graph call 1 App-only token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVDTzRYOWtKYlNLVjVkRzJGenJqd2xvVUcwWS...Совет
Только для проверки и отладки можно декодировать маркеры доступа только для приложений с помощью средства синтаксического анализа токенов Майкрософт в сети по адресу https://jwt.ms. Анализ маркера может оказаться полезным, если при вызове Microsoft Graph возникают ошибки маркера. Например, убедитесь, что
roleутверждение в маркере содержит ожидаемые области разрешений Microsoft Graph.