Создание настраиваемого расширения проверки подлинности для запуска коллекции атрибутов и отправки событий (предварительная версия)
Область применения: клиенты рабочей силы внешние клиенты (дополнительные сведения)
В этой статье описывается, как расширить возможности регистрации пользователей в Внешняя идентификация Microsoft Entra для клиентов. В потоках пользователей регистрации клиента прослушиватели событий можно использовать для расширения процесса сбора атрибутов до сбора атрибутов и во время отправки атрибутов:
Событие OnAttributeCollectionStart происходит в начале шага коллекции атрибутов перед отображением страницы сбора атрибутов. Можно добавить такие действия, как предварительное заполнение значений и отображение ошибки блокировки.
Совет
Чтобы попробовать эту функцию, перейдите на демонстрацию Woodgrove Продуктовые продукты и запустите вариант использования "Предварительно заполненные атрибуты регистрации".
Событие OnAttributeCollectionSubmit возникает после ввода и отправки атрибутов пользователем. Можно добавить такие действия, как проверка или изменение записей пользователя.
Совет
Чтобы попробовать эту функцию, перейдите в демонстрационную версию Woodgrove Groceries и запустите вариант использования "Проверить атрибуты регистрации" или "Запретить пользователю продолжить процесс регистрации".
Помимо создания настраиваемого расширения проверки подлинности для запуска и отправки событий коллекции атрибутов, необходимо создать REST API, определяющий действия рабочего процесса для каждого события. Вы можете использовать любой язык программирования, платформу и среду размещения для создания и размещения REST API. В этой статье показано, как быстро приступить к работе с функцией Azure C#. При использовании Функции Azure вы запускаете код в бессерверной среде, не создавая виртуальную машину или публикуя веб-приложение.
Необходимые компоненты
- Чтобы использовать службы Azure, включая Функции Azure, требуется подписка Azure. Если у вас нет существующей учетной записи Azure, вы можете зарегистрироваться для бесплатной пробной версии или воспользоваться преимуществами подписки Visual Studio при создании учетной записи.
- Поток регистрации и входа.
Шаг 1. Создание пользовательских расширений проверки подлинности REST API (приложение-функция Azure)
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
На этом шаге вы создадите API функции триггера HTTP с помощью Функции Azure. API-интерфейс функции — это источник бизнес-логики для потоков пользователей. После создания функции триггера ее можно настроить для любого из следующих событий:
Войдите в портал Azure с учетной записью администратора.
На домашней странице или в меню портала Azure выберите Создать ресурс.
Найдите и выберите приложение-функцию и нажмите кнопку "Создать".
На странице Основные сведения используйте параметры приложения-функции как указано в таблице ниже:
Параметр Предлагаемое значение Description Подписка Ваша подписка Подписка, в которой будет создано новое приложение-функция. Группа ресурсов myResourceGroup Выберите и существующую группу ресурсов или имя новой, в которой вы создадите приложение-функцию. Имя приложения-функции Глобально уникальное имя Имя, определяющее новое приложение-функцию. Допустимые символы: a-z
(без учета регистра),0-9
и-
.Опубликовать Код Параметр для публикации файлов кода или контейнера Docker. В этом руководстве выберите "Код". Стек среды выполнения .NET Предпочитаемый язык программирования. В этом руководстве выберите .NET. Версия 6 (LTS) in-process Версия среды выполнения .NET. В процессе вы можете создавать и изменять функции на портале, которые рекомендуется использовать для этого руководства. Регион Предпочтительный регион Выберите регион, ближайший к вам или к другим службам, к которым могут обращаться функции. Операционная система Windows Операционная система предварительно выбирается на основе выбора стека среды выполнения. Тип плана Потребление (бессерверный) План размещения, который определяет выделение ресурсов в приложении-функции. Выберите "Проверка и создание ", чтобы просмотреть выбранные параметры конфигурации приложения, а затем нажмите кнопку "Создать". Развертывание займет несколько минут.
После развертывания выберите "Перейти к ресурсу ", чтобы просмотреть новое приложение-функцию.
1.1 Создание функций триггера HTTP
Теперь, когда вы создали приложение-функцию Azure, вы создадите функции триггера HTTP для действий, которые необходимо вызвать с помощью HTTP-запроса. На триггеры HTTP ссылаются и вызываются пользовательским расширением проверки подлинности Microsoft Entra.
- На странице обзора приложения-функции выберите область "Функции" и выберите "Создать функцию" в разделе "Создать" в портал Azure.
- В окне "Создание функции" оставьте свойство среды разработки как "Разработка" на портале. В разделе "Шаблон" выберите триггер HTTP.
- В разделе "Сведения о шаблоне" введите CustomAuthenticationExtensionsAPI для свойства New Function .
- Для уровня авторизации выберите "Функция".
- Нажмите кнопку создания.
1.2. Настройка триггера HTTP для OnAttributeCollectionStart
- В меню выберите "Код и тест".
- Перейдите на вкладку ниже для сценария, который вы хотите реализовать: "Продолжить", "Блокировать" или "ЗадатьPrefillValues". Замените код указанным фрагментом кода.
- После замены кода в верхнем меню выберите "Получить URL-адрес функции" и скопируйте URL-адрес. Этот URL-адрес используется на шаге 2. Создание и регистрация настраиваемого расширения проверки подлинности для целевого URL-адреса.
Используйте этот триггер HTTP, чтобы разрешить пользователю продолжать работу с потоком регистрации, если дальнейшие действия не требуются.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionStart.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionStartResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
1.3. Настройка триггера HTTP для OnAttributeCollectionSubmit
- В меню выберите "Код и тест".
- Перейдите на вкладку ниже для сценария, который вы хотите реализовать: "Продолжить", "Блокировать", "Изменить значения" или "Ошибка проверки". Замените код указанным фрагментом кода.
- После замены кода в верхнем меню выберите "Получить URL-адрес функции" и скопируйте URL-адрес. Этот URL-адрес используется на шаге 2. Создание и регистрация настраиваемого расширения проверки подлинности для целевого URL-адреса.
Используйте этот триггер HTTP, чтобы разрешить пользователю продолжать работу с потоком регистрации, если дальнейшие действия не требуются.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionSubmit.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
Шаг 2. Создание и регистрация настраиваемого расширения проверки подлинности
На этом шаге вы регистрируете пользовательское расширение проверки подлинности, которое используется идентификатором Microsoft Entra для вызова функции Azure. Расширение пользовательской проверки подлинности содержит сведения о конечной точке REST API, начале сбора атрибутов и отправке действий, которые он анализирует из REST API, и способах проверки подлинности в REST API.
Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений и администратор проверки подлинности.
Перейдите к расширениям пользовательской проверки подлинности для внешних> удостоверений удостоверений.>
Выберите " Создать пользовательское расширение".
В разделе "Основы" выберите событие AttributeCollectionStart или событие AttributeCollectionSubmit , а затем нажмите кнопку "Далее". Убедитесь, что это соответствует конфигурации на предыдущем шаге.
В конфигурации конечной точки заполните следующие свойства:
- Имя — имя настраиваемого расширения проверки подлинности. Например, событие коллекции атрибутов.
- Целевой URL-адрес —
{Function_Url}
URL-адрес функции Azure. - Описание — описание пользовательских расширений проверки подлинности.
Выберите Далее.
В разделе "Проверка подлинности API" выберите параметр "Создать новое приложение", чтобы создать регистрацию приложения, представляющего приложение-функцию.
Присвойте приложению имя, например Функции Azure API событий проверки подлинности.
Выберите Далее.
Выберите "Создать", который создает настраиваемое расширение проверки подлинности и связанную регистрацию приложения.
2.2 Предоставление согласия администратора
После создания расширения пользовательской проверки подлинности предоставьте приложению согласие на зарегистрированное приложение, которое позволяет пользовательскому расширению проверки подлинности пройти проверку подлинности в API.
- Перейдите к расширениям пользовательской проверки подлинности для внешних>удостоверений удостоверений>(предварительная версия).
- Выберите расширение пользовательской проверки подлинности из списка.
- На вкладке "Обзор" нажмите кнопку "Предоставить разрешение" , чтобы предоставить администратору согласие зарегистрированного приложения. Пользовательское расширение проверки подлинности используется
client_credentials
для проверки подлинности в приложении-функции Azure с помощьюReceive custom authentication extension HTTP requests
разрешения. Выберите Принять.
Шаг 3. Добавление настраиваемого расширения проверки подлинности в поток пользователя
Теперь можно связать пользовательское расширение проверки подлинности с одним или несколькими потоками пользователей.
Примечание.
Если вам нужно создать поток пользователя, выполните действия, описанные в разделе "Создание потока регистрации и входа для клиентов".
3.1 Добавление настраиваемого расширения проверки подлинности в существующий поток пользователя
Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений и администратор проверки подлинности
Если у вас есть доступ к нескольким клиентам, используйте значок "Параметры" в верхнем меню, чтобы переключиться на внешний клиент.
Перейдите к потокам пользователей внешних>удостоверений удостоверений>.
Выберите поток из списка.
Выберите расширения пользовательской проверки подлинности.
На странице расширений пользовательской проверки подлинности можно связать расширение пользовательской проверки подлинности с двумя различными шагами в потоке пользователя:
- Перед сбором сведений от пользователя связан с событием OnAttributeCollectionStart . Выберите карандаш редактирования. Будут отображаться только пользовательские расширения, настроенные для события OnAttributeCollectionStart . Выберите приложение, настроенное для события запуска коллекции атрибутов, и нажмите кнопку "Выбрать".
- Когда пользователь отправляет свои сведения , связан с событием OnAttributeCollectionSubmit . Будут отображаться только пользовательские расширения, настроенные для события OnAttributeCollectionSubmit . Выберите приложение, настроенное для отправки события отправки коллекции атрибутов, и нажмите кнопку "Выбрать".
Убедитесь, что приложения, перечисленные рядом с обоими шагами сбора атрибутов, верны.
Выберите значок Сохранить.
Шаг 4. Тестирование приложения
Чтобы получить маркер и проверить пользовательское расширение проверки подлинности, можно использовать https://jwt.ms приложение. Это веб-приложение, принадлежащее Майкрософт, которое отображает декодированные содержимое токена (содержимое маркера никогда не покидает браузер).
Выполните следующие действия, чтобы зарегистрировать веб-приложение jwt.ms :
4.1 Регистрация веб-приложения jwt.ms
- Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений.
- Перейдите к регистрации приложений>удостоверений>.
- Выберите Создать регистрацию.
- Введите имя приложения. Например, мое тестовое приложение.
- В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.
- В раскрывающемся списке "Выбор платформы " в URI перенаправления выберите веб-сайт и введите
https://jwt.ms
в текстовое поле URL-адреса. - Нажмите кнопку "Регистрация", чтобы завершить регистрацию приложения.
4.2 Получение идентификатора приложения
В разделе "Обзор" в разделе "Обзор" скопируйте идентификатор приложения (клиента). Идентификатор приложения называется приведенным <client_id>
ниже. В Microsoft Graph он ссылается на свойство appId .
4.3 Включение неявного потока
Тестовое приложение jwt.ms использует неявный поток. Включите неявный поток в регистрации приложения My Test, выполнив следующие действия.
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, используемый для тестирования в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот подход не следует использовать для проверки подлинности пользователей в рабочих приложениях (дополнительные сведения).
- В разделе Управление выберите Проверка подлинности.
- В разделе Неявное предоставление разрешения и гибридные потоки установите флажок Токены ИД (используются для неявных и гибридных потоков).
- Выберите Сохранить.
Шаг 5. Защита функции Azure
Расширение пользовательской проверки подлинности Microsoft Entra использует серверный поток для получения маркера доступа, который отправляется в заголовке HTTP Authorization
в функцию Azure. При публикации функции в Azure, особенно в рабочей среде, необходимо проверить маркер, отправленный в заголовке авторизации.
Чтобы защитить функцию Azure, выполните следующие действия, чтобы интегрировать проверку подлинности Microsoft Entra для проверки входящих маркеров с регистрацией приложения API событий проверки подлинности Функции Azure.
Примечание.
Если приложение-функция Azure размещено в другом клиенте Azure, отличном от клиента, в котором зарегистрировано пользовательское расширение проверки подлинности, перейдите к шагу 5.1 С помощью поставщика удостоверений OpenID Connect.
5.1 Добавление поставщика удостоверений в функцию Azure
Войдите на портал Azure.
Перейдите и выберите приложение-функцию, которое вы ранее опубликовали.
В меню слева выберите пункт Проверка подлинности.
Выберите " Добавить поставщик удостоверений".
Выберите Корпорацию Майкрософт в качестве поставщика удостоверений.
Выберите "Клиент" в качестве типа клиента.
В разделе "Регистрация приложений" введите
client_id
регистрацию приложения API событий проверки подлинности Функции Azure, которую вы ранее создали при регистрации пользовательского поставщика утверждений.Для URL-адреса издателя введите следующий URL-адрес
https://{domainName}.ciamlogin.com/{tenant_id}/v2.0
, где{domainName}
— это доменное имя внешнего клиента.{tenantId}
— это идентификатор клиента внешнего клиента. Пользовательский модуль проверки подлинности должен быть зарегистрирован здесь.
В разделе "Неавторизованные запросы" выберите HTTP 401 Unauthorizeded в качестве поставщика удостоверений.
Отмените выбор параметра хранилища токенов.
Выберите "Добавить ", чтобы добавить проверку подлинности в функцию Azure.
5.2 Использование поставщика удостоверений OpenID Connect
Если вы настроили шаг 5. Защита функции Azure, пропустите этот шаг. В противном случае, если функция Azure размещена в другом клиенте, отличном от клиента, в котором зарегистрировано пользовательское расширение проверки подлинности, выполните следующие действия, чтобы защитить функцию:
Войдите в портал Azure, а затем перейдите и выберите приложение-функцию, опубликованное ранее.
В меню слева выберите пункт Проверка подлинности.
Выберите " Добавить поставщик удостоверений".
Выберите OpenID Connect в качестве поставщика удостоверений.
Укажите имя, например идентификатор Microsoft Entra Contoso.
В разделе записи метаданных введите следующий URL-адрес в URL-адрес документа. Замените
{tenantId}
идентификатор клиента Microsoft Entra.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
В разделе регистрации приложения введите идентификатор приложения (идентификатор клиента) созданного вами приложения API событий проверки подлинности Функции Azure.
В Центре администрирования Microsoft Entra:
- Выберите ранее созданную регистрацию приложения API событий проверки подлинности Функции Azure.
- Выберите Сертификаты и секреты>Секреты клиента>Создать секрет клиента.
- Добавьте описание секрета клиента.
- Выберите срок действия секрета или укажите настраиваемое время существования.
- Выберите Добавить.
- Запишите значение секрета для использования в коде клиентского приложения. Это значение секрета больше нигде не отображается после закрытия страницы.
Вернитесь в функцию Azure под регистрацией приложения, введите секрет клиента.
Отмените выбор параметра хранилища токенов.
Выберите "Добавить", чтобы добавить поставщика удостоверений OpenID Connect.
Шаг 6. Тестирование приложения
Чтобы проверить расширение пользовательской проверки подлинности, выполните следующие действия.
Откройте новый частный браузер и перейдите по следующему URL-адресу:
https://<domainName>.ciamlogin.com/<tenant_id>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=code+id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
- Замените
<domainName>
своим именем внешнего клиента и замените<tenant-id>
его идентификатором внешнего клиента. - Замените
<client_id>
идентификатором приложения, добавленного в поток пользователя.
- Замените
После входа вы увидите декодированные маркеры
https://jwt.ms
по адресу.