Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применяется к: арендаторы рабочей силы
внешние клиенты (подробнее)
В этом руководстве вы вызываете API Microsoft Graph из веб-приложения Python Flask. В предыдущем руководствевы добавили в приложение возможности входа и выхода. После входа пользователя приложение получает маркер доступа для вызова API Microsoft Graph.
В этом руководстве вы:
- Обновите существующее веб-приложение Python Flask для получения токена доступа
- Используйте маркер доступа для вызова API Microsoft Graph.
Необходимые условия
Выполните действия, описанные в руководстве "Добавление функции входа в веб-приложение на Python Flask с использованием платформы удостоверений Microsoft".
Определение областей и конечной точки API
В этом примере мы вызываем API Microsoft Graph, чтобы получить сведения о профиле вошедшего пользователя. Если ваше приложение находится в клиенте рабочей силы, при входе пользователь дает согласие на области, необходимые приложению для доступа к API Microsoft Graph. Если ваше приложение находится во внешнем клиенте, убедитесь, что вы предоставить согласие администратора от имени пользователей в вашем клиенте. Затем приложение использует маркер доступа для вызова API и отображения результатов.
В файле .env добавьте конечную точку, которую мы вызываем, и области, необходимые для вызова API Microsoft Graph:
SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me
Прочитайте новые конфигурации в приложении, обновив файл app_config.py.
# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")
Вызов защищенного API
Передайте конечную точку API на домашнюю страницу. Это позволяет вызывать конечную точку. Обновите маршрут
/
, чтобы выглядеть так, как показано в следующем фрагменте кода:@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", api_endpoint=os.getenv("ENDPOINT") # added this line )
Вызовите защищенный API Microsoft Graph, как показано в следующем фрагменте кода. Мы передаем список областей, которые необходимо использовать нашему приложению. Если области присутствуют, контекст содержит маркер доступа. Маркер доступа используется для вызова нижестоящего API. Добавьте этот код в файл app.py:
@app.route("/call_api") @auth.login_required(scopes=os.getenv("SCOPE", "").split()) def call_downstream_api(*, context): api_result = requests.get( # Use access token to call a web api os.getenv("ENDPOINT"), headers={'Authorization': 'Bearer ' + context['access_token']}, timeout=30, ).json() if context.get('access_token') else "Did you forget to set the SCOPE environment variable?" return render_template('display.html', title="API Response", result=api_result)
Если приложение успешно получает маркер доступа, он выполняет HTTP-запрос к нижестоящему API с помощью метода
requests.get(...)
. В запросе URL нашего нижестоящего API указан вapp_config.ENDPOINT
, а маркер доступа передан в полеAuthorization
заголовка запроса.Успешный запрос к нижестоящему API (API Microsoft Graph) возвращает ответ JSON, хранящийся в переменной
api_result
, и передается в шаблонdisplay.html
для отрисовки.
Отображение результатов API
Создайте файл с именем display.html в папке шаблонов. На этой странице отображается результат вызова конечной точки Microsoft Graph. Добавьте следующий код в файл display.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Microsoft Identity Python Web App: API</title>
</head>
<body>
<a href="javascript:window.history.go(-1)">Back</a> <!-- Displayed on top of a potentially large JSON response, so it will remain visible -->
<h1>{{title}}</h1>
<pre>{{ result |tojson(indent=4) }}</pre> <!-- Just a generic json viewer -->
</body>
</html>
Запуск и проверка примера веб-приложения
В терминале выполните следующую команду:
python3 -m flask run --debug --host=localhost --port=3000
Вы можете использовать нужный порт. Этот порт должен быть похож на порт URI перенаправления, зарегистрированного ранее.
Откройте браузер, а затем перейдите к
http://localhost:3000
. Вы увидите страницу входа.Войдите с помощью учетной записи Майкрософт, выполнив действия. Вам предлагается указать адрес электронной почты и пароль для входа.
Если приложению нужны какие-либо разрешения, появится экран согласия. Приложение запрашивает разрешение на сохранение доступа к данным, к которым вы предоставили доступ, и на авторизацию вас. Выберите Принять. Этот экран не отображается, если области не определены.
API вызовов
Выберите ссылку «вызов API» на домашней странице. Приложение вызывает API Microsoft Graph, чтобы получить сведения о профиле вошедшего пользователя. Приложение отображает результат вызова API.
Выберите выход, чтобы выйти из приложения. Вам будет предложено выбрать учетную запись для выхода. Выберите учетную запись, используемую для входа.
Справочные материалы
ms_identity_python абстрагирует детали библиотеки MSAL. Дополнительные сведения см. в документации по MSAL Python. Этот справочный материал поможет вам понять, как инициализировать приложение и получать маркеры с помощью MSAL Python.