Условная оркестровка настраиваемой политики Azure B2CStep

Я пытаюсь ввести новый шаг оркестрации на основе значения моего настраиваемого атрибута. Мое требование состоит в том, что я хочу выполнить шаг оркестрации, только если для значения myattribute (логического атрибута) установлено значение true. Значение myattribute либо равно true, либо false. Я делаю что-то подобное.

<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
  <Value>False</Value>
  <Value>extension_myattribute</Value>
  <Action>SkipThisOrchestrationStep</Action>
</Precondition>

Но этот шаг не пропускается независимо от значения myattribute. Я добавил myattribute как часть OutPutClaims для AAD-UserReadUsingObjectId. Я могу видеть значение extension_myattribute в C #.

Любые указатели на примеры сравнения значений мне очень помогут.


person Jagadish KM    schedule 17.08.2018    source источник
comment
Ваш настраиваемый атрибут типа boolean?   -  person Chris Padgett    schedule 18.08.2018
comment
Нет, но я могу сделать это логическим атрибутом. Также я могу получить этот атрибут extension_myattribute как часть требований.   -  person Jagadish KM    schedule 20.08.2018
comment
Я обновил вопрос, чтобы внести больше ясности.   -  person Jagadish KM    schedule 21.08.2018


Ответы (2)


Для предварительного условия ClaimEquals первый <Value /> должен быть установлен на тип утверждения, а второй <Value /> должен быть установлен на значение утверждения:

<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
  <Value>extension_myattribute</Value>
  <Value>False</Value>
  <Action>SkipThisOrchestrationStep</Action>
</Precondition>

Для утверждения логического возможными значениями являются «Истина» и «Ложь».

person Chris Padgett    schedule 21.08.2018

То, что вы пытаетесь сделать, должно сработать, по крайней мере, в стартовом пакете есть очень похожие примеры.

https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/blob/f376b431dc0c7353faf52632d3d3f735ad5978a1/scenarios/source/aadb2c-ofuse/scenarios/source/aadb2c-ofuse/scenarios/source/aadb2c-ofuse/rel=

    <!-- Check if the user has selected to sign in using one of the social providers -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
          <Value>authenticationSource</Value>
          <Value>socialIdpAuthentication</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
        <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="SelfAsserted-Input-ToU-LocalAccountSignUp" />
      </ClaimsExchanges>
    </OrchestrationStep>

В xsd также явно упоминаются «истина» и «ложь».

<xs:attribute use="required" name="ExecuteActionsIf" type="xs:boolean" >
  <xs:annotation>
    <xs:documentation>
      Specifies if the actions in this precondition should be performed if the test is true or false.
    </xs:documentation>
  </xs:annotation>
</xs:attribute>

Может быть, ваше требование еще не предъявлено? Или вы смешиваете атрибуты и утверждения?

person Alex AIT    schedule 17.08.2018
comment
Думаю, мои вопросы были непонятны. Я удалю код из своего вопроса, который вызывает путаницу. - person Jagadish KM; 18.08.2018