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


RelyingParty

Примечание.

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

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

В следующем примере показан элемент RelyingParty в файле политики B2C_1A_signup_signin:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="https://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="your-tenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://your-tenant.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>your-tenant.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="7"/>
      <SessionExpiryType>Rolling</SessionExpiryType>
      <SessionExpiryInSeconds>900</SessionExpiryInSeconds>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="your-application-insights-key" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <ContentDefinitionParameters>
        <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
      </ContentDefinitionParameters>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Description>The policy profile</Description>
      <Protocol Name="OpenIdConnect" />
      <Metadata>collection of key/value pairs of data</Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="loyaltyNumber" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
  ...

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

Элемент Вхождения Description
DefaultUserJourney 1:1 Путь взаимодействия пользователя по умолчанию для приложения проверяющей стороны.
Конечные точки 00:14 Список конечных точек. Дополнительные сведения см. в разделе Конечная точка UserInfo.
UserJourneyBehaviors 00:14 Область действия пути взаимодействия пользователя.
TechnicalProfile 1:1 Технический профиль, поддерживаемый приложением проверяющей стороны. Технический профиль предоставляет контракт для связи приложения проверяющей стороны с Azure AD B2C.

Необходимо создать дочерние элементы RelyingParty в порядке, представленном в предыдущей таблице.

Конечные точки

Элемент Конечные точки содержит следующий элемент:

Элемент Вхождения Description
Конечная точка 1:1 Ссылка на конечную точку.

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

Атрибут Обязательное поле Описание
Артикул Да Уникальный идентификатор аргумента.
UserJourneyReferenceId Да Идентификатор пути взаимодействия пользователя в политике. Дополнительные сведения см. в статье UserJourneys.

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

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <Endpoints>
    <Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
  </Endpoints>
  ...

DefaultUserJourney

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

Политика B2C_1A_signup_signin:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn">
  ...

B2C_1A_TrustFrameWorkBase или B2C_1A_TrustFrameworkExtensionPolicy:

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
  ...

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

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

UserJourneyBehaviors

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

Элемент Вхождения Description
SingleSignOn 00:14 Область действия сеанса единого входа (SSO) в пути взаимодействия пользователя.
SessionExpiryType 00:14 Поведение аутентификации в сеансе. Возможные значения: Rolling или Absolute. Значение Rolling (по умолчанию) указывает, что пользователь остается в системе до тех пор, пока он постоянно работает в приложении. Значение Absolute указывает, что пользователь вынужден повторно пройти аутентификацию по истечении периода времени, указанного как время существования сеанса приложения.
SessionExpiryInSeconds 00:14 Время существования файла cookie сеанса (в виде целого числа) Azure AD B2C, сохраняемого в браузере пользователя при успешной аутентификации. По умолчанию используется значение 86,400 секунд (24 часа). Минимальное значение — 900 секунд (15 минут). Максимальное значение — 86,400 секунд (24 часа).
JourneyInsights 00:14 Ключ инструментирования Azure Application Insights, который нужно использовать.
ContentDefinitionParameters 00:14 Список пар "ключ — значение", которые должны быть добавлены к URI загрузки определения содержимого.
JourneyFraming 00:14 Позволяет загружать пользовательский интерфейс этой политики в iframe.
ScriptExecution 00:14 Поддерживаемые режимы выполнения JavaScript. Возможные значения: Allow или Disallow (по умолчанию).

При использовании приведенных выше элементов необходимо добавить их в элемент UserJourneyBehaviors в порядке, указанном в таблице. Например, элемент JourneyInsights необходимо добавить до (выше) элемента ScriptExecution .

SingleSignOn

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

Атрибут Обязательное поле Описание
Область действия Да Область поведение единого входа. Возможные значения: Suppressed, Tenant, Application или Policy. Значение Suppressed указывает, что поведение подавляется, и пользователь всегда получает запрос на выбор поставщика удостоверений. Значение Tenant указывает, что поведение применяется для всех политик в клиенте. Например, пользователь, который проходит через пути взаимодействия двух политик для клиента, не получает запрос на выбор поставщика удостоверений. Значение Application указывает, что поведение применяется ко всем политикам для приложения, делающего запрос. Например, пользователь, который проходит через пути взаимодействия двух политик для приложения, не получает запрос на выбор поставщика удостоверений. Значение Policy указывает, что поведение применяется только к политике. Например, пользователь, который проходит через пути взаимодействия двух политик для инфраструктуры доверия, получает запрос на выбор поставщика удостоверений при переключении политик.
KeepAliveInDays No Контролирует, как долго пользователь будет оставаться в системе. Если задать значение 0, функция "Оставаться в системе" будет отключена. Значение по умолчанию — 0 (отключено). Минимальное значение — 1 день. Максимальное значение — 90 дней. Дополнительные сведения см. в статье Включение функции "Оставаться в системе" в Azure Active Directory B2C.
EnforceIdTokenHintOnLogout No Принудительно передает ранее созданный маркер идентификатора конечной точке выхода в качестве подсказки о текущем сеансе, прошедшем проверку подлинности конечного пользователя, с клиентом. Возможные значения: false (по умолчанию) или true. Дополнительные сведения см. в разделе Веб-вход с помощью OpenID Connect.

JourneyInsights

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

Атрибут Обязательное поле Описание
TelemetryEngine Да Значение должно быть равно ApplicationInsights.
InstrumentationKey Да Строка, содержащая ключ инструментирования для элемента Application Insights.
DeveloperMode Да Возможные значения: true или false. Если параметр имеет значение true, Application Insights передает телеметрию через конвейер обработки. Этот параметр подходит для разработки, но ограничен большими томами. Подробные журналы действий предназначены только для упрощения разработки пользовательских политик. Не используйте режим разработки в рабочей среде. В журналах регистрируются все утверждения, отправляемые и принимаемые поставщиками удостоверений во время разработки. При использовании режима разработки в рабочей среде разработчик несет ответственность за персональные данные, собранные в его журнале App Insights. Эти подробные журналы собираются только в том случае, когда этот параметр имеет значение true.
ClientEnabled Да Возможные значения: true или false. Если параметр имеет значение true, клиентский сценарий Application Insights отправляется для отслеживания представления страницы и ошибок на стороне клиента.
ServerEnabled Да Возможные значения: true или false. Если параметр имеет значение true, отправляется существующие данные JSON UserJourneyRecorder как пользовательское событие в Application Insights.
TelemetryVersion Да Значение должно быть равно 1.0.0.

Дополнительные сведения см. в статье о сборе журналов.

ContentDefinitionParameters

Используя настраиваемые политики в Azure AD B2C, можно отправлять параметр в строке запроса. Передавая параметр в конечную точку HTML, вы можете динамически изменять содержимое страницы. Например, можно изменить фоновое изображение страницы регистрации или входа в Azure AD B2C на основе параметра, передаваемого из веб-приложения или мобильного приложения. Azure AD B2C передает параметры строки запроса в ваш динамический HTML-файл, такой как файл ASPX.

В следующем примере передается параметр с именем campaignId со значением hawaii в строке запроса:

https://login.microsoft.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?pB2C_1A_signup_signin&client_id=a415078a-0402-4ce3-a9c6-ec1947fcfb3f&nonce=defaultNonce&redirect_uri=http%3A%2F%2Fjwt.io%2F&scope=openid&response_type=id_token&prompt=login&campaignId=hawaii

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

Элемент Вхождения Description
ContentDefinitionParameter 0:n Строка, содержащая пару "ключ — значение", которая добавляется к строке запроса в URI загрузки определения содержимого.

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

Атрибут Обязательное поле Description
Полное имя Да Имя пары "ключ — значение".

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

JourneyFraming

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

Атрибут Обязательное поле Описание
Включено Да Включает загрузку этой политики в iframe. Возможные значения: false (по умолчанию) или true.
Источники Да Содержит домены, которые будут загружать узел iframe. Дополнительные сведения см. в статье Загрузка Azure B2C в iframe.

TechnicalProfile

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

Атрибут Обязательное поле Описание
Артикул Да Значение должно быть равно PolicyProfile.

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

Элемент Вхождения Description
DisplayName 1:1 Строка с именем технического профиля.
Description 00:14 Строка с описанием технического профиля.
Протокол 1:1 Протокол, используемый для федерации.
Метаданные 00:14 Коллекция пар "ключ — значение" элемента, используемая протоколом для связи с конечной точкой в ​​ходе транзакции для настройки взаимодействия между проверяющей стороной и другими участниками сообщества.
InputClaims 1:1 Список типов утверждений, которые используются в качестве входных данных в техническом профиле. Каждый из этих элементов содержит ссылку на элемент ClaimType, уже определенный в разделе ClaimsSchema или в политике, из которой этот файл политики наследуется.
OutputClaims 1:1 Список типов утверждений, которые используются в качестве выходных данных в техническом профиле. Каждый из этих элементов содержит ссылку на элемент ClaimType, уже определенный в разделе ClaimsSchema или в политике, из которой этот файл политики наследуется.
SubjectNamingInfo 1:1 Имя субъекта, используемое в токенах.

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

Атрибут Обязательное поле Description
Полное имя Да Имя допустимого протокола, поддерживаемого в Azure AD B2C и используемого в составе технического профиля. Возможные значения: OpenIdConnect или SAML2. Значение OpenIdConnect представляет собой стандарт протокола OpenID Connect 1.0 согласно спецификации OpenID Foundation. Значение SAML2 представляет стандартный протокол SAML 2.0 согласно спецификации OASIS.

Метаданные

Если используется протокол SAML, элемент метаданных содержит следующие элементы. Дополнительные сведения см. в разделе Параметры регистрации приложения SAML в Azure AD B2C.

Атрибут Обязательное поле Описание
IdpInitiatedProfileEnabled No Указывает, поддерживается ли поток, инициированный IDP. Возможные значения: true или false (по умолчанию).
XmlSignatureAlgorithm No Метод, который Azure AD B2C использует для подписания ответа SAML. Возможные значения: Sha256, Sha384, Sha512 или Sha1. Настройте алгоритм подписи на обеих сторонах, используя одно и то же значение. Используйте только тот алгоритм, который поддерживается вашим сертификатом. Сведения о настройке утверждения SAML см. в разделе Метаданные технического профиля для издателя SAML.
DataEncryptionMethod No Указывает метод, который Azure AD B2C использует для шифрования данных с помощью алгоритма AES (AES). Метаданные контролируют значение элемента <EncryptedData> в ответе SAML. Возможные значения: Aes256 (по умолчанию), Aes192, Sha512 или Aes128.
KeyEncryptionMethod No Указывает метод, который Azure AD B2C использует для шифрования копии ключа, который использовался для шифрования данных. Метаданные контролируют значение элемента <EncryptedKey> в ответе SAML. Возможные значения: Rsa15 (по умолчанию) — алгоритм шифрования по стандарту криптографии открытого ключа RSA (PKCS) версии 1.5, RsaOaep алгоритм шифрования (OAEP) с оптимальным асимметричным шифрованием RSA.
UseDetachedKeys No Возможные значения: true или false (по умолчанию). Если значение равно true, Azure AD B2C изменяет формат зашифрованных утверждений. Использование отсоединенных ключей добавляет зашифрованное утверждение в качестве дочернего элемента для EncrytedAssertion, а не для EncryptedData.
WantsSignedResponses No Указывает, подписывает ли Azure AD B2C раздел Response ответа SAML. Возможные значения: true (по умолчанию) или false.
RemoveMillisecondsFromDateTime No Указывает, будут ли значения миллисекунд удаляться из значений DateTime в ответе SAML (включая IssueInstant, NotBefore, NotOnOrAfter и AuthnInstant). Возможные значения: false (по умолчанию) или true.
RequestContextMaximumLengthInBytes No Указывает максимальную длину параметра приложений RelayState SAML. Значение по умолчанию — 1000. Максимальное значение — 2048.

InputClaims

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

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

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

Атрибут Обязательное поле Описание
ClaimTypeReferenceId Да Ссылка на ClaimType, уже определенная в разделе ClaimsSchema файла политики.
DefaultValue No Значение по умолчанию, которое можно использовать, если значение утверждения пусто.
PartnerClaimType No Отправляет утверждение с другим именем, указанным в определении ClaimType.

OutputClaims

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

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

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

Атрибут Обязательное поле Описание
ClaimTypeReferenceId Да Ссылка на ClaimType, уже определенная в разделе ClaimsSchema файла политики.
DefaultValue No Значение по умолчанию, которое можно использовать, если значение утверждения пусто.
PartnerClaimType No Отправляет утверждение с другим именем, указанным в определении ClaimType.

SubjectNamingInfo

С помощью элемента SubjectNamingInfo вы управляете значением субъекта токена:

  • Маркер JTW — это утверждение sub. Это субъект, в отношении которого токен подтверждает сведения, например пользователь приложения. Это значение является неизменяемым и не может быть переназначено или повторно использовано. Это значение можно использовать для безопасных проверок авторизации, например, когда токен используется для доступа к ресурсу. По умолчанию утверждение субъекта заполняется идентификатором объекта пользователя в каталоге. Дополнительные сведения см. в статье о настройке токена, сеанса и единого входа.
  • Маркер SAML — это элемент <Subject><NameID>, который определяет элемент "субъект". Формат NameId можно изменить.

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

Атрибут Обязательное поле Описание
ClaimType Да Ссылка на элемент PartnerClaimType исходящего утверждения. Исходящие утверждения должны быть определены в коллекции OutputClaims политики проверяющей стороны с типом PartnerClaimType. Например, <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" /> или <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
Формат No Используется для проверяющих сторон SAML для установки формата NameId, возвращаемого в утверждении SAML.

В следующем примере показано, как определить проверяющую сторону OpenID Connect. Сведения об имени субъекта настраиваются как objectId:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Токен JWT содержит утверждение sub с objectId пользователя:

{
  ...
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  ...
}

В следующем примере показано, как определить проверяющую сторону SAML. Сведения об имени субъекта настраиваются в качестве objectId, а NameId format предоставлены:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
  </TechnicalProfile>
</RelyingParty>