Поставщик MSAL2
Поставщик MSAL2 основан на MSAL-браузере , который реализует поток кода авторизации OAuth 2.0 с PKCE. Он используется для входа пользователей и получения маркеров для использования с Microsoft Graph.
Дополнительные сведения см. в разделе Поставщики.
Начало работы
Поставщик 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:
Перейдите к Центр администрирования Microsoft Entra.
Разверните меню >Удостоверение, разверните пункт Приложения>, выберите Регистрация приложений.
Выберите регистрацию приложения для миграции.
В меню слева перейдите в раздел Проверка подлинности .
В разделе Конфигурации платформы выберите Добавить платформу и выберите Одностраничное приложение.
Удалите все 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-странице.