Поставщик MSAL2

Поставщик MSAL2 использует MSAL-браузер для входа пользователей и получения маркеров для использования с Microsoft Graph.

Дополнительные сведения см. в разделе Поставщики.

Разница между поставщиком MSAL2 и поставщиком MSAL

Хотя использование аналогично, поставщик MSAL и поставщик MSAL2 основаны на разных потоках OAuth. Поставщик MSAL основан на msal.js, который реализует поток неявного предоставления OAuth2.0. Поставщик MSAL2 основан на MSAL-браузере, который реализует поток кода авторизации OAuth 2.0 с PKCE. Так как поток кода авторизации считается более безопасным, чем поток неявного предоставления разрешений для веб-приложений, рекомендуется использовать Msal2Provider по сравнению с MsalProvider. Дополнительные сведения о проблемах безопасности, связанных с потоком неявного предоставления, см. в разделе Недостатки неявного потока.

Все новые приложения должны по возможности использовать поставщик MSAL2.

Начало работы

Поставщик MSAL2 можно инициализировать с помощью HTML или JavaScript.

Инициализация на HTML-странице

Инициализация поставщика MSAL2 в ФОРМАТЕ HTML — это самый простой способ создания нового поставщика. Используйте компонент для mgt-msal2-provider задания идентификатора клиента и других свойств. При этом создается новый PublicClientApplication экземпляр, который используется для всех проверки подлинности и получения маркеров.

    <mgt-msal2-provider client-id="<YOUR_CLIENT_ID>"
                        login-type="redirect/popup"
                        scopes="user.read,people.read"
                        redirect-uri="https://my.redirect/uri"
                        authority="">
    </mgt-msal2-provider>
Атрибут Описание
client-id Строковый идентификатор клиента (см. раздел Создание идентификатора приложения или клиента). Обязательно.
login-type Перечисление между redirect и popup — значение по умолчанию — redirect. Необязательный параметр.
scopes Строки, разделенные запятыми, для областей, на которые пользователь должен согласиться при входе. Необязательный параметр.
пользовательские узлы Строки, разделенные запятыми, для дополнительных доменов, которые может вызывать клиент Microsoft Graph. Необязательный.
authority Строка центра — по умолчанию используется общий центр. Для однотенантного приложения используйте идентификатор клиента или имя клиента. Например, https://login.microsoftonline.com/[your-tenant-contoso.com или https://login.microsoftonline.com/[your-tenant-id]. Необязательный.
URI перенаправления Строка URI перенаправления — по умолчанию используется текущий URI окна. Необязательный параметр.
Подсказка Тип запроса, используемого для входа, между SELECT_ACCOUNT, CONSENT и LOGIN. Значение по умолчанию: SELECT_ACCOUNT. Необязательный параметр.
базовый URL-адрес Конечная точка Microsoft Graph, используемая для вызовов Microsoft Graph. Это может быть любое из поддерживаемых национальных облачных развертываний. Значение по умолчанию — https://graph.microsoft.com.
incremental-consent-disabled Указывает, отключено ли добавочное согласие. По умолчанию false. Необязательный параметр.

Инициализация в JavaScript

Дополнительные параметры можно предоставить, инициализировав поставщик в JavaScript.

    import {Providers} from '@microsoft/mgt-element';
    import {Msal2Provider, Msal2Config, Msal2PublicClientApplicationConfig} from '@microsoft/mgt-msal2-provider';

    // initialize the auth provider globally
    Providers.globalProvider = new Msal2Provider(config: Msal2Config | Msal2PublicClientApplicationConfig);

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

Укажите для clientId создания нового PublicClientApplication

Этот параметр имеет смысл, если microsoft Graph Toolkit отвечает за всю проверку подлинности в приложении.

interface Msal2Config {
  clientId: string;
  scopes?: string[];
  customHosts?: string[];
  authority?: string;
  redirectUri?: string;
  loginType?: LoginType; // LoginType.Popup or LoginType.Redirect (redirect is default)
  prompt?: PromptType; // PromptType.CONSENT, PromptType.LOGIN or PromptType.SELECT_ACCOUNT
  sid?: string; // Session ID
  loginHint?: string;
  domainHint?: string;
  isIncrementalConsentDisabled?: boolean, //Disable incremental consent, true by default
  options?: Configuration // msal-browser Configuration object
}

Передайте существующий PublicClientApplication объект в свойстве publicClientApplication .

Используйте его, если приложение использует функции MSAL, помимо возможностей, предоставляемых и другими функциями Msal2Provider Microsoft Graph Toolkit. Это уместно, если платформа автоматически создает экземпляр и предоставляет PublicClientApplication объект ( например, при использовании MSAL-angular). Дополнительные сведения см. в angular-app примере в репозитории Microsoft Graph Toolkit.

Обязательно изучите возможности для конфликтов при использовании этого параметра. По своей природе существует риск того, что Msal2Provider может изменить состояние сеанса, например, за счет входа пользователя или согласия на дополнительные области. Убедитесь, что приложение и другие платформы корректно реагируют на эти изменения состояния, или рассмотрите возможность использования настраиваемого поставщика .

interface Msal2PublicClientApplicationConfig {
  publicClientApplication: PublicClientApplication;
  scopes?: string[];
  customHosts?: string[];
  authority?: string;
  redirectUri?: string;
  loginType?: LoginType; // LoginType.Popup or LoginType.Redirect (redirect is default)
  prompt?: PromptType; // PromptType.CONSENT, PromptType.LOGIN or PromptType.SELECT_ACCOUNT
  sid?: string; // Session ID
  loginHint?: string;
  domainHint?: string;
  isIncrementalConsentDisabled?: boolean, //Disable incremental consent, true by default
  options?: Configuration // msal-browser Configuration object
}

Использование другой облачной конечной точки

Используйте его, если вы хотите использовать набор средств для отрисовки данных из другой конечной точки Microsoft 365.

import {Providers, Msal2Provider} from '@microsoft/mgt'

const config: Msal2Config = {
  baseUrl: 'https://graph.microsoft.us', // change the base URL
  clientId: '2dfea037-xxx-c05708a1b241',
  ... // rest of the config
}

Providers.globalProvider = new Msal2Provider(config);

Кроме того:

<mgt-msal2-provider
      client-id="2dfea037-xxx-c05708a1b241"
      redirect-uri="http://localhost:3000"
      base-url="https://dod-graph.microsoft.us"
      scopes="user.read,user.read.all">
</mgt-msal2-provider>

Чтобы вызвать пользовательские API, запросите этот API область.

<mgt-get resource="https://myapi.com/v1.0/api" scopes="api://CUSTOM_API_GUID/SCOPE">
  ...
</mgt-get>

или с помощью Javascript или Typescript

import { prepScopes } from "@microsoft/mgt-element";

graphClient
  .api("https://myapi.com/v1.0/api")
  .middlewareOptions(prepScopes("api://CUSTOM_API_GUID/SCOPE"))
  .get();
...

Использование пользовательских узлов для вызова различных защищенных Microsoft Entra ID конечных точек

Если вы хотите вызвать собственные пользовательские Microsoft Entra ID защищенных конечных точек, передайте эти домены базовому клиенту Microsoft Graph.

import {Providers, Msal2Provider} from '@microsoft/mgt'

const config: Msal2Config = {
  clientId: '2dfea037-xxx-c05708a1b241',
  customHosts: ['mydomain.com'] //array of domains, not urls!
  ... // rest of the config
}

Providers.globalProvider = new Msal2Provider(config);

Кроме того:

<mgt-msal2-provider
      client-id="2dfea037-xxx-c05708a1b241"
      redirect-uri="http://localhost:3000"
      custom-hosts="mydomain.com"
      scopes="user.read,user.read.all">
</mgt-msal2-provider>

Создание идентификатора клиента/приложения

Дополнительные сведения о регистрации приложения и получении идентификатора клиента см. в разделе Создание приложения Microsoft Entra.

Переход с поставщика MSAL на поставщик MSAL2

Чтобы перенести приложение, использующее поставщик MSAL, к поставщику MSAL2:

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

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

  3. Выберите регистрацию приложения для миграции.

  4. В меню слева перейдите в раздел Проверка подлинности .

  5. В разделе Конфигурации платформы выберите Добавить платформу и выберите Одностраничное приложение.

  6. Удалите все URI перенаправления, зарегистрированные в интернете, и добавьте их в одностраничное приложение.

  7. В коде замените на MSALProviderMSAL2Provider.

    При инициализации поставщика в коде JS/TS выполните следующие действия.

    Замените инструкцию import для на mgt-MSAL-provider

    import {Msal2Provider, PromptType} from '@microsoft/mgt-msal2-provider';
    

    Замените инициализацию MsalProvider на

    Providers.globalProvider = new Msal2Provider({
      clientId: 'REPLACE_WITH_CLIENTID'
      ...
    })
    

    Если вы инициализируете поставщик в ФОРМАТЕ HTML, замените

    <mgt-msal-provider client-id="" ... ></mgt-msal-provider>
    

    С

    <mgt-msal2-provider  client-id="" ... ></mgt-msal2-provider>
    

    Дополнительные сведения см. в разделе Инициализация на HTML-странице.