Поделиться через


Технические профили

Примечание.

В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные потоки пользователей. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure Active Directory B2C, чтобы узнать о базовом пакете настраиваемых политик, если еще не сделали этого.

Технический профиль предоставляет платформу со встроенным механизмом для взаимодействия с различными типами сторон. Технические профили служат для обмена данными с клиентом Azure Active Directory B2C (Azure AD B2C), создания пользователя или чтения его профиля. Технический профиль поддерживает самостоятельное подтверждение для взаимодействия с пользователем. Например, он может получать учетные данные пользователя для входа, а затем отображать страницу регистрации или сброса пароля.

Типы технических профилей

Технический профиль поддерживает следующие типы сценариев:

Процесс работы с техническим профилем

Все типы технических профилей созданы в рамках одной концепции. Для начала они считывают входящие утверждения и выполняют преобразования утверждений. Затем они взаимодействуют с настроенной стороной, например поставщиком удостоверений, REST API или службами каталогов Microsoft Entra. После завершения этого процесса технический профиль возвращает исходящие утверждения и может выполнять их преобразование. Ниже показана схема обработки трансформаций и сопоставлений, на которые ссылается технический профиль. Независимо от того, с какой службой взаимодействует технический профиль, после преобразования исходящие утверждения технического профиля сразу же сохраняются в хранилище утверждений.

Схема, демонстрирующая поток технического профиля.

  1. Управление сеансами единого входа (SSO): восстанавливает состояние сеанса технического профиля с помощью управления сеансами единого входа.
  2. Преобразование входящих утверждений: перед запуском технического профиля Azure AD B2C выполняет преобразованиевходящих утверждений.
  3. Входящие утверждения: утверждения извлекаются из хранилища утверждений и используются в техническом профиле.
  4. Выполнение технического профиля: технический профиль обменивается утверждениями с настроенной службой. Например:
    • Пользователь перенаправляется к поставщику удостоверений для завершения процедуры входа. После успешного входа пользователь возвращается назад, и выполнение технического профиля продолжается.
    • Вызов REST API с последующей отправкой параметров в поле InputClaims и получение сведений в поле OutputClaims.
    • Создает учетную запись пользователя или обновляет ее.
    • Отправляет и проверяет текстовое сообщение многофакторной аутентификации.
  5. Технические профили проверки. самоподтвержденный технический профиль может вызывать технические профили проверки для проверки данных, для которых пользователь выполнил профилирование. Только технические профили с самостоятельным подтверждением могут использовать технические профили проверки.
  6. Исходящие утверждения: утверждения возвращаются в хранилище утверждений. Эти утверждения можно использовать на следующем шаге оркестрации или для преобразования исходящих утверждений.
  7. Преобразования исходящих утверждений: после завершения работы технического профиля Azure AD B2C выполняет преобразования исходящих утверждений.
  8. Управление сеансами единого входа: сохраняет данные технического профиля в сеансе с помощью функции управления сеансами единого входа.

Элемент TechnicalProfiles содержит набор технических профилей, поддерживаемых поставщиком утверждений. Каждый поставщик утверждений должен иметь хотя бы один технический профиль. Технический профиль определяет конечные точки и протоколы, необходимые для взаимодействия с поставщиком утверждений. Поставщик утверждений может иметь несколько технических профилей.

<ClaimsProvider>
  <DisplayName>Display name</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Technical profile identifier">
      <DisplayName>Display name of technical profile</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        ...
      </Metadata>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Элемент TechnicalProfile содержит следующий атрибут.

Атрибут Обязательное поле Описание
Артикул Да Уникальный идентификатор технического профиля. Этот идентификатор позволяет указать технический профиль в других элементах в файле политики. Например, в элементах OrchestrationSteps и ValidationTechnicalProfile.

Элемент TechnicalProfile содержит следующие элементы.

Элемент Вхождения Description
Домен 00:14 Доменное имя технического профиля. Например, если в техническом профиле указан поставщик удостоверений Facebook, доменное имя будет иметь значение Facebook.com.
DisplayName 1:1 Отображаемое имя технического профиля.
Description 00:14 Описание технического профиля.
Протокол 1:1 Протокол, используемый для взаимодействия с другой стороной.
Метаданные 00:14 Набор ключей и значений, которые управляют поведением технического профиля.
InputTokenFormat 00:14 Формат входного маркера. Возможные значения: JSON, JWT, SAML11 или SAML2. Значение JWT представляет JSON Web Token по спецификации IETF. Значение SAML11 обозначает веб-маркер SAML 1.1 по спецификации OASIS. Значение SAML2 обозначает веб-маркер SAML 2.0 по спецификации OASIS.
OutputTokenFormat 00:14 Формат выходного маркера. Возможные значения: JSON, JWT, SAML11 или SAML2.
CryptographicKeys 00:14 Список криптографических ключей, используемых в техническом профиле.
InputClaimsTransformations 00:14 Список ссылок на предварительно определенные преобразования утверждений, которые должны быть выполнены перед отправкой утверждений поставщику утверждений или проверяющей стороне.
InputClaims 00:14 Список ссылок на предварительно определенные типы утверждений, которые принимаются как входные данные для технического профиля.
PersistedClaims 00:14 Список ссылок на предварительно определенные типы утверждений, которые будут сохранены как входные данные для технического профиля.
DisplayClaim 00:14 Список ссылок на предварительно определенные типы утверждений, которые представляются как входные данные для самоподтвержденного технического профиля. Функция DisplayClaim в настоящее время доступна в предварительной версии.
OutputClaims 00:14 Список ссылок на предварительно определенные типы утверждений, которые используются как выходные данные для технического профиля.
OutputClaimsTransformations 00:14 Список ссылок на предварительно определенные преобразования утверждений, которые должны быть выполнены после получения утверждений от поставщика утверждений.
ValidationTechnicalProfiles 0:n Список ссылок на другие технические профили, которые этот технический профиль использует для проверки. Дополнительные сведения см. в описании технического профиля проверки.
SubjectNamingInfo 00:14 Управляет созданием имени субъекта, для маркеров, в которых имя субъекта указывается отдельно от утверждений. В качестве примера можно привести OAuth или SAML.
IncludeInSso 00:14 Следует ли при использовании этого технического профиля применять поведение единого входа для сеанса или задать обязательное явное взаимодействие вместо этого. Этот элемент является допустимым только в профилях SelfAsserted, используемых в техническом профиле проверки. Возможные значения: true (по умолчанию) или false.
IncludeClaimsFromTechnicalProfile 00:14 Идентификатор технического профиля, все входные и выходные утверждения из которого нужно добавить в текущий технический профиль. Технический профиль, указанный в этой ссылке, должен быть определен в том же файле политики.
IncludeTechnicalProfile 00:14 Идентификатор технического профиля, все данные из которого нужно добавить в текущий технический профиль.
UseTechnicalProfileForSessionManagement 00:14 Другой технический профиль, который нужно использовать для управления сеансами.
EnabledForUserJourneys 00:14 Указывает, выполняется ли технический профиль в пути взаимодействия пользователя.

Протокол

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

Атрибут Обязательное поле Description
Полное имя Да Имя допустимого протокола, поддерживаемого в Azure AD B2C и используемого в составе технического профиля. Возможные значения: OAuth1 или OAuth2, SAML2, OpenIdConnect, Proprietary или None.
Обработчик No Если имя протокола имеет значение Proprietary, здесь должно быть указано имя сборки, которую Azure AD B2C использует для определения обработчика протокола. Если для атрибута name протокола задано значение , не включайте атрибут NoneОбработчика.

Метаданные

Элемент Metadata содержит соответствующие параметры конфигурации для конкретного протокола. Список поддерживаемых метаданных задокументирован в соответствующей спецификации технического профиля. Элемент Metadata содержит следующий элемент.

Элемент Вхождения Description
Товар 0:n Метаданные, относящиеся к техническому профилю. Каждый тип технического профиля имеет свой набор элементов метаданных. Дополнительные сведения см. в разделе "Типы технических профилей".

Товар

Элемент Item из элемента Metadata содержит следующие атрибуты:

Атрибут Обязательное поле Описание
Key Да Ключ метаданных. Список элементов метаданных см. в описании каждого типа технических профилей.

В следующем примере показано использование метаданных, относящихся к техническому профилю OAuth2.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <Metadata>
    <Item Key="ProviderName">facebook</Item>
    <Item Key="authorization_endpoint">https://www.facebook.com/dialog/oauth</Item>
    <Item Key="AccessTokenEndpoint">https://graph.facebook.com/oauth/access_token</Item>
    <Item Key="HttpBinding">GET</Item>
    <Item Key="UsePolicyInRedirectUri">0</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

В следующем примере показано использование метаданных, относящихся к техническому профилю REST API.

<TechnicalProfile Id="REST-Validate-Email">
  ...
  <Metadata>
    <Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item>
    <Item Key="AuthenticationType">Bearer</Item>
    <Item Key="SendClaimsIn">Body</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

Криптографические ключи

Чтобы установить отношение доверия с интегрируемыми службами, Azure AD B2C хранит секреты и сертификаты в виде ключей политики. Во время выполнения технического профиля Azure AD B2C извлекает криптографические ключи из ключей политики Azure AD B2C. Затем Azure AD B2C использует ключи для установления доверия или шифрования или подписи токена. Эти отношения доверия состоят из следующих элементов:

  • Федерация с поставщиками удостоверений OAuth1, OAuth2и SAML.
  • Защита подключения с помощью служб REST API.
  • Подписывание и шифрование токенов JWT и SAML.

Элемент CryptographicKeys содержит следующие элементы:

Элемент Вхождения Description
Key 1:n Криптографический ключ, используемый в этом техническом профиле.

Ключ

Элемент Key содержит следующие атрибуты:

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

Преобразования входящих утверждений

Элемент InputClaimsTransformations может содержать коллекцию элементов преобразования входящих утверждений, которые используются для изменения входящих или создания новых утверждений.

Исходящие утверждения для предыдущего преобразования утверждений в коллекции преобразований утверждений могут использоваться в качестве входящих утверждений для последующего преобразования входящих утверждений. Таким образом можно получить последовательность преобразований утверждений, которые зависят друг от друга.

Элемент InputClaimsTransformations содержит следующий элемент:

Элемент Вхождения Description
InputClaimsTransformation 1:n Идентификатор преобразования утверждений, который должен быть выполнен перед отправкой утверждений поставщику утверждений или проверяющей стороне. Преобразование утверждений позволяет изменить существующие утверждения ClaimsSchema или создать новые.

InputClaimsTransformation

Элемент InputClaimsTransformation содержит следующий атрибут:

Атрибут Обязательное поле Описание
ReferenceId Да Идентификатор преобразования утверждений, который уже определен в файле политики или файле родительской политики.

Следующие технические профили ссылаются на преобразование утверждений CreateOtherMailsFromEmail Claims. Преобразование утверждения добавляет значение email утверждения в коллекцию otherMails перед сохранением данных в каталоге.

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  ...
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  ...
</TechnicalProfile>

Входящие утверждения

Элемент InputClaims выбирает утверждения из хранилища утверждений, которые используются для технического профиля. Например, технический профиль с самостоятельным подтверждением использует входящие утверждения для предварительного заполнения исходящих утверждений, предоставляемых пользователем. Технический профиль REST API использует входящие утверждения для отправки входящих параметров в конечную точку REST API. Azure AD B2C использует входное утверждение в качестве уникального идентификатора для чтения, обновления или удаления учетной записи.

Элемент InputClaims содержит следующий элемент:

Элемент Вхождения Description
InputClaim 1:n Ожидаемый тип входящего утверждения.

InputClaim

Элемент InputClaim содержит следующие атрибуты:

Атрибут Обязательное поле Описание
ClaimTypeReferenceId Да Идентификатор типа утверждения. Утверждение уже определено в разделе схемы утверждений в файле политики или файле родительской политики.
DefaultValue No Значение по умолчанию, которое будет использоваться для создания утверждения, если указанное в ClaimTypeReferenceId утверждение не существует, чтобы технический профиль мог использовать созданное утверждение в качестве элемента InputClaim.
AlwaysUseDefaultValue Да Настраивает принудительное использование значения по умолчанию.
PartnerClaimType No Идентификатор типа утверждения внешнего партнера, с которым сопоставляется указанный тип утверждения политики. Если атрибут PartnerClaimType не указан, указанный тип утверждения политики сопоставляется с одноименным типом утверждения партнера. Это свойство используется, если стороны используют разные имена типов утверждения. Например, вы используете утверждение с именем givenName, а ваш партнер — утверждение с именем first_name.

Отображаемые утверждения

Элемент DisplayClaims содержит список утверждений, которые должны быть представлены на экране для сбора данных от пользователя. В коллекции "Отображаемые утверждения" можно включить ссылку на созданный тип утверждения или отображаемый элемент управления.

  • Тип утверждения — это ссылка на утверждение, отображаемая на экране.
    • Чтобы потребовать от пользователя обязательно указать значение для определенного исходящего утверждения, задайте атрибуту Required элемента OutputClaims значение true.
    • Чтобы предварительно заполнить отображаемые утверждения необходимыми значениями, используйте описанные выше входящие утверждения. Элемент также может содержать значение по умолчанию.
    • Элемент ClaimType в коллекции OutputClaims должен задать для элемента UserInputType любой тип ввода пользователя, который поддерживается Azure AD B2C. Например, можно указать TextBox или DropdownSingleSelect.
  • Элемент управления отображением — это элемент пользовательского интерфейса, который реализует особую функциональность и взаимодействует с серверной службой Azure AD B2C. Она позволяет пользователю выполнять на странице действия, которые вызывают технический профиль проверки из внутренней службы. Например, проверьте адрес электронной почты, номер телефона или номер по программе лояльности клиента.

Порядок элементов в DisplayClaims указывает порядок, в котором Azure AD B2C отображает утверждения на экране.

Элемент DisplayClaims содержит следующие элементы:

Элемент Вхождения Description
DisplayClaim 1:n Ожидаемый тип входящего утверждения.

DisplayClaim

Элемент DisplayClaim содержит следующие атрибуты:

Атрибут Обязательное поле Описание
ClaimTypeReferenceId No Идентификатор типа утверждения, который уже определен в разделе ClaimsSchema файла политики или файла родительской политики.
DisplayControlReferenceId No Идентификатор отображаемого элемента управления, который уже определен в разделе ClaimsSchema файла политики или файла родительской политики.
Обязательное поле No Указывает, требуется ли отображаемое утверждение.

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

Снимок экрана, на котором показан самоподтвержденный технический профиль с отображаемыми утверждениями.

В следующем техническом профиле:

  • Первое отображаемое утверждение создает ссылку на элемент управления отображением emailVerificationControl, который собирает и проверяет адрес электронной почты.
  • Пятое отображаемое утверждение создает ссылку на элемент управления отображением phoneVerificationControl, который собирает и проверяет номер телефона.
  • Другие отображаемые утверждения являются элементами ClaimTypes и должны быть получены от пользователя.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Сохраненные утверждения

Элемент PersistedClaims содержит все значения, которые должны сохраняться техническим профилем идентификатора Microsoft Entra ID с возможным сопоставлением данных между типом утверждения, уже определенным в разделе ClaimsSchema в политике и именем атрибута Microsoft Entra.

Имя утверждения — это имя атрибута Microsoft Entra, если атрибут PartnerClaimType не указан, который содержит имя атрибута Microsoft Entra.

Элемент PersistedClaims содержит следующие элементы:

Элемент Вхождения Description
PersistedClaim 1:n Тип утверждения, который нужно сохранять.

PersistedClaim

Элемент PersistedClaim содержит следующие атрибуты:

Атрибут Обязательное поле Описание
ClaimTypeReferenceId Да Идентификатор типа утверждения, который уже определен в разделе ClaimsSchema файла политики или файла родительской политики.
DefaultValue No Значение по умолчанию, используемое для создания утверждения, если утверждение не существует.
PartnerClaimType No Идентификатор типа утверждения внешнего партнера, с которым сопоставляется указанный тип утверждения политики. Если атрибут PartnerClaimType не указан, указанный тип утверждения политики сопоставляется с одноименным типом утверждения партнера. Это свойство используется, если стороны используют разные имена типов утверждения. Например, вы используете утверждение с именем givenName, а ваш партнер — утверждение с именем first_name.

В следующем примере технический профиль AAD-UserWriteUsingLogonEmail или пакет ключей для начала работы, который создает новую локальную учетную запись, сохраняет следующие утверждения:

<PersistedClaims>
  <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
  <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
  <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
  <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />
  <PersistedClaim ClaimTypeReferenceId="givenName" />
  <PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>

Исходящие утверждения

Элемент OutputClaims представляет собой коллекцию утверждений, возвращаемых в хранилище утверждений после завершения работы технического профиля. Эти утверждения можно использовать на следующем шаге оркестрации или для преобразования исходящих утверждений. Элемент PersistedClaim содержит следующие элементы:

Элемент Вхождения Description
outputClaim 1:n Ожидаемый тип исходящего утверждения.

outputClaim

Элемент OutputClaim содержит следующие атрибуты:

Атрибут Обязательное поле Описание
ClaimTypeReferenceId Да Идентификатор типа утверждения, который уже определен в разделе ClaimsSchema файла политики или файла родительской политики.
DefaultValue No Значение по умолчанию, используемое для создания утверждения, если утверждение не существует.
AlwaysUseDefaultValue No Настраивает принудительное использование значения по умолчанию.
PartnerClaimType No Идентификатор типа утверждения внешнего партнера, с которым сопоставляется указанный тип утверждения политики. Если атрибут типа утверждения партнера не указан, указанный тип утверждения политики сопоставляется с одноименным типом утверждения партнера. Это свойство используется, если стороны используют разные имена типов утверждения. Например, вы используете утверждение с именем givenName, а ваш партнер — утверждение с именем first_name.

Преобразования исходящих утверждений

Элемент OutputClaimsTransformation может содержать коллекцию элементов OutputClaimsTransformation. Преобразования исходящих утверждений используются для изменения или создания новых исходящих утверждений. После выполнения исходящие утверждения возвращаются в хранилище утверждений. Эти утверждения можно использовать на следующем шаге оркестрации.

Исходящие утверждения для предыдущего преобразования утверждений в коллекции преобразований утверждений могут использоваться в качестве входящих утверждений для последующего преобразования входящих утверждений. Таким образом можно получить последовательность преобразований утверждений, которые зависят друг от друга.

Элемент OutputClaimsTransformations содержит следующий элемент:

Элемент Вхождения Description
OutputClaimsTransformation 1:n Идентификаторы преобразований утверждений, которые должны быть выполнены перед отправкой утверждений поставщику утверждений или проверяющей стороне. Преобразование утверждений позволяет изменить существующие утверждения ClaimsSchema или создать новые.

OutputClaimsTransformation

Элемент OutputClaimsTransformations содержит следующий атрибут:

Атрибут Обязательное поле Описание
ReferenceId Да Идентификатор преобразования утверждений, который уже определен в файле политики или файле родительской политики.

Следующий технический профиль ссылается на преобразование утверждений AssertAccountEnabledIsTrue, чтобы определить, включена ли учетная запись после считывания утверждения accountEnabled из каталога.

<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
  ...
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="accountEnabled" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
  </OutputClaimsTransformations>
  ...
</TechnicalProfile>

Технические профили проверки

Технический профиль проверки используется для проверки исходящих утверждений в самоподтвержденном техническом профиле. Технический профиль проверки — это обычный технический профиль любого протокола, например идентификатор Microsoft Entra или REST API. Технический профиль проверки возвращает исходящие утверждения или код ошибки. Сообщение об ошибке отображается на экране, что позволяет пользователю повторить попытку.

На следующей схеме показано, как Azure AD B2C использует технический профиль проверки для проверки учетных данных пользователя.

Схема, на которой показан поток технического профиля проверки.

Элемент ValidationTechnicalProfiles содержит следующий элемент:

Элемент Вхождения Description
ValidationTechnicalProfile 1:n Идентификаторы технических профилей, которые используются для проверки некоторых или всех выходных утверждений технического профиля, в который включен этот элемент. Все входящие утверждения указанного технического профиля должны присутствовать в списке выходных утверждений технического профиля, в который включен этот элемент.

ValidationTechnicalProfile

Элемент ValidationTechnicalProfile содержит следующий атрибут:

Атрибут Обязательное поле Описание
ReferenceId Да Идентификатор технического профиля, который уже определен в файле политики или файле родительской политики.

SubjectNamingInfo

Элемент SubjectNamingInfo определяет имя субъекта, используемое в токенах в политике проверяющей стороны. Элемент SubjectNamingInfo содержит следующий атрибут.

Атрибут Обязательное поле Описание
ClaimType Да Идентификатор типа утверждения, который уже определен в разделе ClaimsSchema файла политики.

Добавление технического профиля

Технический профиль может включать другой технический профиль для изменения параметров или добавления новых функций. Элемент IncludeTechnicalProfile — это ссылка на общий технический профиль, на основе которого создается текущий профиль. Чтобы уменьшить избыточность и снизить уровень сложности элементов политики, используйте включение профилей при наличии нескольких технических профилей, совместно использующих ключевые элементы. Используйте общий технический профиль с общим набором конфигураций наряду с техническими профилями конкретных задач, которые включают общий технический профиль.

Предположим, у вас есть технический профиль REST API с одной конечной точкой, в который необходимо отправить разные наборы утверждений для различных сценариев. Создайте общий технический профиль с общими функциями, такими как URI конечной точки REST API, метаданные, тип проверки подлинности и криптографические ключи. Создайте технические профили конкретной задачи, которые включают общий технический профиль. Затем добавьте входящие и исходящие утверждения или перезапишите URI конечной точки REST API, относящийся к этому техническому профилю.

Элемент IncludeTechnicalProfile содержит следующий атрибут:

Атрибут Обязательное поле Описание
ReferenceId Да Идентификатор технического профиля, который уже определен в файле политики или файле родительской политики.

В следующем примере показано добавление профилей.

  • REST-API-Common: общий технический профиль с базовой конфигурацией.
  • REST-ValidateProfile: включает технический профиль REST-API-Common, а также задает входящие и исходящие утверждения.
  • REST-UpdateProfile: включает технический профильREST-API-Common, задает входящие утверждения и перезаписывает метаданные ServiceUrl.
<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-API-Common">
      <DisplayName>Base REST API configuration</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="SendClaimsIn">Body</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_B2cRestClientId" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_B2cRestClientSecret" />
      </CryptographicKeys>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-ValidateProfile">
      <DisplayName>Validate the account and return promo code</DisplayName>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
        <InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="promoCode" />
      </OutputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-UpdateProfile">
      <DisplayName>Update the user profile</DisplayName>  
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/update</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Многоуровневое включение

Технический профиль может включать один технический профиль. Количество уровней включения не ограничено. Например технический профиль AAD-UserReadUsingAlternativeSecurityId-NoError включает AAD-UserReadUsingAlternativeSecurityId. Этот технический профиль задает для элемента метаданных RaiseErrorIfClaimsPrincipalDoesNotExist значение true и вызывает ошибку, если учетная запись социальной сети не существует в каталоге. AAD-UserReadUsingAlternativeSecurityId-NoError переопределяет это поведение и отключает сообщение об ошибке.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId-NoError">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
  </Metadata>
  <IncludeTechnicalProfile ReferenceId="AAD-UserReadUsingAlternativeSecurityId" />
</TechnicalProfile>

AAD-UserReadUsingAlternativeSecurityId включает технический профиль AAD-Common.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">User does not exist. Please sign up before you can sign in.</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

AAD-UserReadUsingAlternativeSecurityId-NoError и AAD-UserReadUsingAlternativeSecurityId не указывают требуемый элемент Protocol, так как он указан в техническом профиле AAD-Common.

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...
</TechnicalProfile>

Использование технических профилей для управления сеансами

Элемент UseTechnicalProfileForSessionManagement ссылается на технический профиль сеанса единого входа. Элемент UseTechnicalProfileForSessionManagement содержит следующий атрибут:

Атрибут Обязательное поле Описание
ReferenceId Да Идентификатор технического профиля, который уже определен в файле политики или файле родительской политики.

Включено для пути взаимодействия пользователя

ClaimsProviderSelections в пути взаимодействия пользователя определяет список и порядок расположения вариантов для выбора поставщика утверждений. Элемент EnabledForUserJourneys позволяет отфильтровать доступных для пользователя поставщиков утверждений. Элемент EnabledForUserJourneys содержит одно из следующих значений:

  • Always: выполняет технический профиль.
  • Never: пропускает технический профиль.
  • OnClaimsExistence: выполняет технический профиль только при наличии в техническом профиле определенного утверждения.
  • OnItemExistenceInStringCollectionClaim выполняет технический профиль только при наличии элемента в утверждении коллекции строк.
  • OnItemAbsenceInStringCollectionClaim выполняет технический профиль только при отсутствии элемента в утверждении коллекции строк.

С помощью OnClaimsExistence, OnItemExistenceInStringCollectionClaim или OnItemAbsenceInStringCollectionClaim вы должны указать следующие метаданные:

  • ClaimTypeOnWhichToEnable: задает тип утверждения, которое необходимо вычислить.
  • ClaimValueOnWhichToEnable: задает значение для сравнения.

Следующий технический профиль выполняется, только когда коллекция строк identityProviders содержит значение facebook.com:

<TechnicalProfile Id="UnLink-Facebook-OAUTH">
  <DisplayName>Unlink Facebook</DisplayName>
...
    <Metadata>
      <Item Key="ClaimTypeOnWhichToEnable">identityProviders</Item>
      <Item Key="ClaimValueOnWhichToEnable">facebook.com</Item>
    </Metadata>
...
  <EnabledForUserJourneys>OnItemExistenceInStringCollectionClaim</EnabledForUserJourneys>
</TechnicalProfile>