Поставщик MSAL2

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

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

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

Хотя использование аналогично, поставщик MSAL и поставщик MSAL2 основаны на разных потоках OAuth. Поставщик MSAL основан на msal.js, который реализует поток неявного предоставления OAuth2.0. Поставщик MSAL2 основан на msal-browser, который реализует поток кода авторизации 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 Строки с разделителями-запятыми для областей, которым пользователь должен предоставить согласие при входе. Необязательный.
authority Строка центра — по умолчанию используется общий центр. Для однотенантного приложения используйте идентификатор клиента или имя клиента. Например, https://login.microsoftonline.com/[your-tenant-name].onmicrosoft.com или https://login.microsoftonline.com/[your-tenant-id]. Необязательный.
URI перенаправления Строка URI перенаправления — по умолчанию используется текущий URI окна. Необязательный параметр.
Подсказка Тип запроса, используемого для входа, между SELECT_ACCOUNT, CONSENT и LOGIN. Значение по умолчанию: SELECT_ACCOUNT. Необязательный параметр.
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[];
  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[];
  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
}

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

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

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

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

  1. Перейдите на портал Azure по адресу https://portal.azure.com.

  2. В меню выберите Azure Active Directory.

  3. В меню Azure Active Directory выберите Регистрация приложений.

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

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

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

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

  8. В коде замените на 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-странице.