Упражнение. Авторизация доступа к API Microsoft Graph с помощью MSAL

Завершено

В этом упражнении вы настраиваете приложение с разрешениями и используете MSAL для доступа к данным профиля пользователя из API Microsoft Graph (MS Graph).

Добавление разрешений Microsoft Graph в регистрацию приложения

Веб-службы, защищенные идентификатором Microsoft Entra, определяют набор разрешений, которые предоставляют доступ к функциям API и данным, предоставляемым этой службой. Прежде чем приложение сможет получить доступ к данным или действовать от имени пользователя, он должен запросить эти разрешения, которые будут утверждены пользователями. Эти разрешения API можно назначить регистрации приложения из портал Azure. Ниже приведены инструкции по назначению разрешений API Microsoft Graph для приложения.

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

    Снимок экрана: меню области разрешений API приложения, зарегистрированного с идентификатором Microsoft Entra в портал Azure.

    • Выберите Добавить разрешение.

    • Убедитесь, что выбрана вкладка API Майкрософт.

    • В разделе "Часто используемые API Microsoft" выберите Microsoft Graph, а затем выберите делегированные разрешения.

    • В разделе "Делегированные разрешения" прокрутите вниз и выберите User.Read в списке. Это разрешение предназначено для доступа к информации пользователя, выполнившего вход, из конечной точки https://graph.microsoft.com/v1.0/me.

    • Выберите Добавить разрешения.

      Снимок экрана: область разрешений API приложения, зарегистрированного в идентификаторе Microsoft Entra в портал Azure.

Выполнение приложения

Попробуйте сделать вызов API Graph в приложении из предыдущего упражнения.

  1. Откройте браузер и перейдите по адресу http://localhost:8080/msal4j-servlet-graph/. Если вы еще не вошли, вы будете перенаправлены для входа с помощью идентификатора Microsoft Entra. На успешном входе вы увидите страницу, как показано на следующем рисунке.

    Снимок экрана: кнопка вызова графа, отображаемого на странице после успешного входа в пример приложения.

  2. Выберите "Граф вызовов ", чтобы вызвать конечную точку Microsoft Graph /me и просмотреть отображаемые сведения о пользователе.

Общие сведения о коде для доступа к Microsoft Graph

Вы можете найти код для доступа к API Microsoft Graph в классе CallGraphServlet.java сервлета в каталоге msal4j проекта/callgraphwebapp/ . Он определяет /call_graph конечную точку в приложении, которая выполняет авторизованные вызовы к конечной точке API https://graph.microsoft.com/v1.0/me Microsoft Graph для получения сведений о профиле пользователя, вошедшего в систему. Ниже приведены дополнительные сведения о коде доступа к графу.

  1. В файле ./src/main/resources/authentication.properties для параметра User.Read задается значение aad.scopes области User.Read.

    Области сообщают Microsoft Entra ID уровень доступа, который приложение запрашивает и сопоставляет с разрешениями в регистрации приложения. На основе запрошенных областей идентификатор Microsoft Entra представляет диалог согласия для пользователя при входе. Если пользователь дает согласие на одну или несколько областей, они кодируются в результирующий access_token ответ проверки подлинности.

  2. Когда пользователь переходит к /call_graph, приложение создает экземпляр IGraphServiceClient (Microsoft Graph SDK Java), передавая маркер доступа пользователя, выполнившего вход. Клиент Graph отсюда помещает маркер доступа в заголовки авторизации своих запросов. Затем приложение требует у клиента графа вызвать конечную точку Microsoft Graph /me, чтобы получить сведения для текущего пользователя, выполнившего вход.

    Разработчику приложения достаточно написать следующий код, чтобы получать доступ к конечной точке /me, при условии, что у него уже есть действительный маркер доступа для службы Graph с областью User.Read.

    //CallGraphServlet.java
    User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();