Вложенные пути

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

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

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

Вложенные пути во многом аналогичны путям взаимодействия пользователя: все они представляются в виде последовательности оркестрации, которая должна быть соблюдена для успешного выполнения транзакции. Пути взаимодействия пользователя могут быть вызваны отдельно и требуют наличия шага SendClaims. Вложенные пути являются компонентами пути взаимодействия пользователя и не могут вызываться сами по себе, а всегда выполняются из пути взаимодействия пользователя.

Ветвление используется в первую очередь для того, чтобы точнее обрабатывать бизнес-логику в пути взаимодействия пользователя. Типичные шаги оркестрации группируются в более крупные элементы, которые можно вызывать отдельно. Вложенный путь позволяет упростить пути, в которых несколько действий оркестрации выполняются совместно (при одинаковых условиях). Вложенный путь вызывается только из пути взаимодействия пользователя, и он не должен вызывать другой вложенный путь.

Различают два типа вложенных путей.

  • Вызов — управление возвращается вызывающему объекту. Вложенный путь выполняется, а затем возвращает управление на этап оркестрации, который выполняется в этот момент в процессе взаимодействия пользователя.
  • Передача — управление передается вложенному пути (необратимое ветвление). Вложенный путь должен содержать шаг SendClaims для передачи утверждений приложению проверяющей стороны.

Примеры сценариев

Вызов вспомогательного пути

Вызов вспомогательного пути удобен в следующих сценариях.

  • Ограничения по возрасту: при использовании ограничений по возрасту многие компоненты используются в нескольких путях взаимодействия пользователя. Ветвление позволяет объединить общие элементы в совместно используемые компоненты.
  • Родительское согласие: ветвление позволяет удобнее реализовать систему родительского согласия, предоставляя доступ к утверждениям в пути взаимодействия пользователя, предназначенном для несовершеннолетних, а также возможность ветвления в пути взаимодействия пользователя для выполнения действий, требующих родительского согласия, при наличии такого согласия.
  • От регистрации к входу: нередко встречаются ситуации, когда пользователь уже зарегистрирован в каталоге, но не знает или забыл об этом. В таких случаях может быть удобно, если путь взаимодействия пользователя не просто сообщит пользователю, что введенные учетные данные уже существуют, и заставить начинать все заново, а автоматически перенесет такого пользователя из потока регистрации в поток входа.

Передача вложенного пути

Передача вложенного пути удобна в следующих сценариях.

  • Отображение блочной страницы.
  • Тестирование "А/Б" путем перенаправления запроса во вложенный путь для выполнения и выдачи маркера.

Добавление элемента SubJourneys

Ниже приведен пример элемента SubJourney с типом Call, который возвращает управление в вызывающий путь взаимодействия пользователя.

<SubJourneys>
  <SubJourney Id="ConditionalAccess_Evaluation" Type="Call">
    <OrchestrationSteps>
      <OrchestrationStep Order="1" Type="ClaimsExchange">
       <ClaimsExchanges>
        <ClaimsExchange Id="ConditionalAccessEvaluation" TechnicalProfileReferenceId="ConditionalAccessEvaluation" />
       </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <Preconditions>
          <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
            <Value>conditionalAccessClaimCollection</Value>
            <Action>SkipThisOrchestrationStep</Action>
          </Precondition>
        </Preconditions>
        <ClaimsExchanges>
          <ClaimsExchange Id="GenerateCAClaimFlags" TechnicalProfileReferenceId="GenerateCAClaimFlags" />
        </ClaimsExchanges>
      </OrchestrationStep>
    </OrchestrationSteps>
  </SubJourney>
</SubJourneys>

Ниже приведен пример элемента SubJourney с типом Transfer, который возвращает маркер в приложение проверяющей стороны.

<SubJourneys>
  <SubJourney Id="B" Type="Transfer">
    <OrchestrationSteps>
      ...
      <OrchestrationStep Order="5" Type="SendClaims">
    </OrchestrationSteps>
  </SubJourney>
</SubJourneys>

Вызов этапа вложенного пути

Новый этап оркестрации с типом InvokeSubJourney используется для выполнения вложенного пути. В следующем примере демонстрируются все элементы выполнения для этого этапа оркестрации.

<OrchestrationStep Order="5" Type="InvokeSubJourney">
  <JourneyList>
    <Candidate SubJourneyReferenceId="ConditionalAccess_Evaluation" />
  </JourneyList>
</OrchestrationStep>

Компоненты

Чтобы определить вложенные пути, поддерживаемые политикой, добавьте элемент SubJourneys под элементом верхнего уровня в файле политики.

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

Элемент Вхождения Описание
SubJourney 1:n Вложенный путь, определяющий все конструкции, необходимые для полного потока пользователя.

Элемент SubJourneys содержит указанные ниже атрибуты.

attribute Обязательно Описание
Идентификатор Да Идентификатор вложенного пути, который может использоваться в пути взаимодействия пользователя для ссылки на вложенный путь, определенный в политике. Элемент SubJourneyReferenceId в элементе Candidate указывает на этот атрибут.
Тип Да Возможные значения: Call или Transfer. Дополнительные сведения см. в статье о ветвлении пути взаимодействия пользователя.

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

Элемент Вхождения Описание
OrchestrationSteps 1:n Последовательность оркестрации, которая должна соблюдаться для успешного выполнения транзакции. Каждый путь взаимодействия пользователя состоит из упорядоченного списка шагов оркестрации, которые должны выполняться в соответствующей последовательности. Если какой-либо шаг завершится ошибкой, выполнение транзакции завершается сбоем.

OrchestrationSteps

Полный список элементов этапа оркестрации есть в описании элемента UserJourneys.

Дальнейшие действия

Дополнительные сведения о UserJourneys