Поставщик 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:
Перейдите на портал Azure по адресу https://portal.azure.com.
В меню выберите Azure Active Directory.
В меню Azure Active Directory выберите Регистрация приложений.
Выберите регистрацию приложения, которое вы используете в данный момент.
В меню слева перейдите в раздел Проверка подлинности .
В разделе Конфигурации платформы щелкните Добавить платформу и выберите Одностраничное приложение.
Удалите все URI перенаправления, зарегистрированные в интернете, и добавьте их в одностраничное приложение.
В коде замените на
MSALProvider
MSAL2Provider
.При инициализации поставщика в коде 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-странице.