Поделиться через


Краткая инструкция: Вход пользователей в одностраничное приложение (SPA) и вызов API Microsoft Graph

В этом кратком руководстве вы используете пример одностраничного приложения (SPA), чтобы показать, как войти пользователям, используя поток кода авторизации с Ключом проверки подлинности кода (PKCE), и вызывать API Microsoft Graph. В этом примере используется библиотека Microsoft Authentication Library для обработки проверки подлинности.

Необходимые условия

  • Учетная запись Azure с активной подпиской. Если у вас еще нет учетной записи, Создайте ее бесплатно.
  • Эта учетная запись Azure должна иметь разрешения на управление приложениями. Любые из следующих ролей Microsoft Entra включают необходимые разрешения:
    • Администратор приложений
    • Разработчик приложений
    • Администратор облачных приложений.
  • Node.js.
  • Visual Studio Code или другой кодовый редактор.

Регистрация идентификаторов приложения и записей

Чтобы завершить регистрацию, укажите имя приложения, укажите поддерживаемые типы учетных записей и добавьте URI перенаправления. После регистрации панель Обзор отображает идентификаторы, необходимые для использования в исходном коде приложения.

  1. Войдите в Центр администрирования Microsoft Entra.

  2. Если у вас есть доступ к нескольким клиентам, используйте значок параметров в верхнем меню, чтобы переключиться на клиента, в котором вы хотите зарегистрировать приложение, из меню Каталоги + подписки.

  3. Перейдите к Удостоверению>приложения>Регистрация приложений, выберите Новая регистрация.

  4. Введите имя приложения, например identity-client-spa.

  5. Для поддерживаемых типов учетных записейвыберите учетные записи в этом каталоге организации только. Для получения сведений о различных типах учетных записей выберите параметр Help me choose.

  6. Выберите Зарегистрировать.

    снимок экрана, показывающий, как ввести имя и выбрать тип учетной записи в Центре администрирования Microsoft Entra.

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

    снимок экрана, на котором показаны значения идентификаторов на странице обзора в Центре администрирования Microsoft Entra.

    Заметка

    Поддерживаемые типы учетных записей можно изменить, ссылаясь на Изменить учетные записи, поддерживаемые приложением.


Добавьте URI перенаправления платформы

Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.

  1. В разделе Управлениевыберите Аутентификация.
  2. На странице конфигураций платформы выберите Добавить платформу, а затем выберите параметр SPA.
  3. Для URI перенаправления введите http://localhost:3000.
  4. Выберите Настроить, чтобы сохранить изменения.

Клонирование или скачивание примера приложения

Чтобы получить пример приложения, можно клонировать его из GitHub или скачать его в виде файла .zip.

  • Чтобы клонировать пример, откройте командную строку и перейдите к месту создания проекта и введите следующую команду:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-javascript.git
    
  • Скачайте файл .zip. Извлеките его в файловый путь, длина имени которого составляет меньше 260 символов.

Настройка проекта

  1. В интегрированной среде разработки откройте папку проекта ms-identity-docs-code-javascript, содержащую пример.

  2. Откройте vanillajs-spa/App/public/authConfig.js и обновите указанные значения с информацией из центра администрирования.

    /**
     * Configuration object to be passed to MSAL instance on creation. 
     * For a full list of MSAL.js configuration parameters, visit:
     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md 
     */
    const msalConfig = {
        auth: {
    
             // WORKFORCE TENANT
             authority: "https://login.microsoftonline.com/Enter_the_Tenant_Info_Here", //  Replace the placeholder with your tenant info
             // EXTERNAL TENANT
             // authority: "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/", // Replace the placeholder with your tenant subdomain
            redirectUri: '/', // You must register this URI on App Registration. Defaults to window.location.href e.g. http://localhost:3000/
            navigateToLoginRequestUrl: true, // If "true", will navigate back to the original request location before processing the auth code response.
        },
        cache: {
            cacheLocation: 'sessionStorage', // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO.
            storeAuthStateInCookie: false, // set this to true if you have to support IE
        },
        system: {
            loggerOptions: {
                loggerCallback: (level, message, containsPii) => {
                    if (containsPii) {
                        return;
                    }
                    switch (level) {
                        case msal.LogLevel.Error:
                            console.error(message);
                            return;
                        case msal.LogLevel.Info:
                            console.info(message);
                            return;
                        case msal.LogLevel.Verbose:
                            console.debug(message);
                            return;
                        case msal.LogLevel.Warning:
                            console.warn(message);
                            return;
                    }
                },
            },
        },
    };
    
    /**
     * Scopes you add here will be prompted for user consent during sign-in.
     * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
     * For more information about OIDC scopes, visit: 
     * https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#openid-connect-scopes
     * https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#openid-connect-scopes
     */
    const loginRequest = {
        scopes: ["User.Read"],
    };
    
    /**
     * An optional silentRequest object can be used to achieve silent SSO
     * between applications by providing a "login_hint" property.
     */
    
    // const silentRequest = {
    //   scopes: ["openid", "profile"],
    //   loginHint: "example@domain.net"
    // };
    
    // exporting config object for jest
    if (typeof exports !== 'undefined') {
        module.exports = {
            msalConfig: msalConfig,
            loginRequest: loginRequest,
        };
        module.exports = {
            msalConfig: msalConfig,
            loginRequest: loginRequest,
        };
    }
    
    • clientId — идентификатор приложения, который также называется клиентом. Замените текст в кавычках на значение идентификатора приложения (клиента) , записанное ранее.
    • authority - Уполномоченный орган — это URL-адрес, указывающий каталог, из которого MSAL может запрашивать токены. Замените Enter_the_Tenant_Info_Here значением, которое ранее было записано как идентификатор каталога (клиента).
    • redirectUriURI перенаправления приложения. При необходимости замените текст в кавычках на URI перенаправления, который был записан ранее.

Запуск приложения и вход и выход

Запустите проект с веб-сервером с помощью Node.js:

  1. Чтобы запустить сервер, выполните следующие команды из каталога проекта:

    cd vanillajs-spa/App
    npm install
    npm start
    
  2. Скопируйте URL-адрес https, который отображается в терминале, например https://localhost:3000, и вставьте его в браузер. Рекомендуется использовать частный или инкогнито браузерный сеанс.

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

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

    снимок экрана приложения JavaScript с результатами вызова API.

Необходимые условия

  • Внешний арендатор. Чтобы создать его, выберите один из следующих методов:
  • Эта учетная запись Azure должна иметь разрешения на управление приложениями. Любые из следующих ролей Microsoft Entra включают необходимые разрешения:
    • Администратор приложений
    • Разработчик приложений
    • Администратор облачных приложений.
  • Node.js.
  • Visual Studio Code или другой редактор кода.

Регистрация идентификаторов приложения и записей

Чтобы разрешить приложению вход пользователей с помощью Microsoft Entra, необходимо учитывать создаваемый вами внешний идентификатор Microsoft Entra. Регистрация приложения устанавливает отношение доверия между приложением и Microsoft Entra. При регистрации приложения внешний идентификатор создает уникальный идентификатор, известный как идентификатор (клиента), который используется для идентификации приложения при создании запросов аутентификации.

Ниже показано, как зарегистрировать приложение в Центре администрирования Microsoft Entra:

  1. Войдите в систему Центра администрирования Microsoft Entra как минимум в качестве разработчика приложений.

  2. Если у вас есть доступ к нескольким тенантам, используйте значок настроек в верхнем меню, чтобы переключиться на внешний тенант из меню Директории + подписки.

  3. Перейдите к Идентификация>Приложения>Регистрация приложений.

  4. Выберите + Новая учётная запись.

  5. В появившемся окне на странице зарегистрировать приложение;

    1. Введите осмысленное имя приложения, отображающееся пользователям, например ciam-client-app.
    2. В разделе Поддерживаемые типы учетных записейвыберите только учетные записи в этом каталоге организации.
  6. Выберите Зарегистрировать.

  7. Панель Обзор приложения отображается при успешной регистрации. Запишите идентификатор приложения (клиента), который использовать в исходном коде приложения.

Добавьте URI перенаправления платформы

Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.

  1. В разделе Управлениевыберите Аутентификация.
  2. На странице конфигураций платформы выберите Добавить платформу, а затем выберите опцию SPA.
  3. Для URI перенаправления введите http://localhost:3000.
  4. Выберите Настроить, чтобы сохранить изменения.

После того как вы зарегистрируете приложение, ему будет назначено разрешение User.Read. Однако, поскольку клиент является внешним клиентом, сами пользователи клиента не могут согласиться с этим разрешением. Вы, как администратор клиента, должны предоставить это разрешение от имени всех пользователей в клиенте:

  1. На странице регистрации приложений выберите созданное вами приложение (например, ciam-client-app), чтобы открыть его страницу обзора .

  2. В разделе Управлениевыберите разрешения API.

    1. Выберите предоставить согласие администратора для <вашего арендатора>, а затем выберите Да.
    2. Выберите Обновить, а затем убедитесь, что предоставлено для <имя арендатора> отображается в разделе Статус для разрешения.

Создание пользовательского потока

Чтобы пользователи клиента видели возможность регистрации или входа при использовании приложения, необходимо связать приложение с потоком пользователя. Хотя многие приложения могут быть связаны с потоком пользователя, одно приложение может быть связано только с одним потоком пользователя.

  1. В меню боковой панели выберите Удостоверение.

  2. Выберите внешние удостоверения, а затем потоки пользователей.

  3. На странице Потоки пользователей выберите имя потока пользователя, созданное ранее, например, SignInSignUpSample.

  4. В разделе Использованиевыберите Приложения.

  5. Выберите Добавить приложение.

  6. Выберите приложение из списка, например ciam-client-app или используйте поле поиска для поиска приложения, а затем выберите его.

  7. Выберите Выбрать.

Связав приложение с потоком пользователей, вы можете протестировать поток пользователя, имитируя процесс регистрации или входа пользователя с приложением из Центра администрирования Microsoft Entra. Для этого выполните действия, указанные в разделе Тестирование процесса регистрации и авторизации пользователя.

Свяжите SPA с потоком пользователя

Чтобы пользователи клиента видели возможность регистрации или входа при использовании приложения, необходимо связать приложение с потоком пользователя. Хотя многие приложения могут быть связаны с потоком пользователя, одно приложение может быть связано только с одним потоком пользователя.

  1. В меню боковой панели выберите Идентификатор.

  2. Выберите внешние удостоверения, а затем потоки пользователей.

  3. На странице User flows выберите имя потока пользователя, созданное ранее, например SignInSignUpSample.

  4. В разделе Использованиевыберите Приложения.

  5. Выберите Добавить приложение.

  6. Выберите приложение из списка, например ciam-client-app или используйте поле поиска для поиска приложения, а затем выберите его.

  7. Выберите Выбрать.

Связав приложение с потоком пользователей, вы можете протестировать поток пользователя, имитируя процесс регистрации или входа пользователя с приложением из Центра администрирования Microsoft Entra. Для этого выполните действия, описанные в Протестируйте процесс регистрации и входа в поток пользователя.

Клонировать или скачать пример SPA

Чтобы получить пример приложения, можно клонировать его из GitHub или скачать его в виде файла .zip.

  • Чтобы клонировать пример, откройте командную строку и перейдите к месту создания проекта и введите следующую команду:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • Скачайте пример. Извлеките его в путь к файлу, где длина имени меньше 260 символов.

Настройка примера SPA

  1. Откройте App/public/authConfig.js и замените следующие данные на полученные из Центра администрирования Microsoft Entra.

    • Enter_the_Application_Id_Here и замените его идентификатором приложения (клиента), зарегистрированного ранее.
    • Enter_the_Tenant_Subdomain_Here и замените его поддоменом каталога (клиента). Например, если основной домен клиента contoso.onmicrosoft.com, используйте contoso. Если у вас нет имени арендатора, узнайте, как просматривать сведения об арендаторе.
  2. Сохраните файл.

Запуск проекта и вход

  1. Чтобы запустить сервер, выполните следующие команды из каталога проекта:

    cd 1-Authentication\0-sign-in-vanillajs\App
    npm install
    npm start
    
  2. Скопируйте URL-адрес https, который отображается в терминале, например https://localhost:3000, и вставьте его в браузер. Рекомендуется использовать частный или инкогнито браузерный сеанс.

  3. Войдите с учетной записью, зарегистрированной у арендатора.

  4. На следующем снимке экрана показано, что вы вошли в приложение и получили доступ к сведениям о профиле из API Microsoft Graph.

    снимок экрана приложения JavaScript с результатами вызова API.

Выход из приложения

  1. Найдите кнопку Выход на странице и нажмите на неё.
  2. Вам предложат выбрать учетную запись, из которой вы хотите выйти. Выберите учетную запись, используемую для входа.

Появится сообщение, указывающее, что вы выполнили выход. Теперь вы можете закрыть окно браузера.