0
votes

I wanted to know how we can write a policy to show the user a Sign Up button which can direct him to another screen to sign up using the email address. I wrote a custom policy which works with a user with account in the Active directory. For this the first orchestration step lets the user sign in using an email. The step comes back with a message if the user is not found.

After that I am trying to write the second orchestration step which should be executed only if the user was not found in the previous orchestration step.

<OrchestrationStep Order="2" Type="ClaimsExchange">
          <Preconditions>
            <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
              <Value>objectId</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
          </Preconditions>
          <ClaimsExchanges>
                <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
          </ClaimsExchanges>
        </OrchestrationStep>

The step is not executed even after I get the message that the user was not found. How can I get this working. I would have preferred the user to be shown a sign up button the same screen.

Any ideas?

Update: I have a feeling that the alternate flow of not being able to find the user should be handled in the TechnicalProfile and not the orchestration step.

1

1 Answers

0
votes

Are you trying to show a sign-in screen which has a link "Sign-up" that allows user to sign-up using SerlfAssertedAttributeProvider? If so, this is how it is done in the LocalAccounts starter pack (copied from TrustFrameworkBase.xml):

    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
      </ClaimsProviderSelections>
      <ClaimsExchanges>
        <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
      </ClaimsExchanges>
    </OrchestrationStep>

    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
          <Value>objectId</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
      </ClaimsExchanges>
    </OrchestrationStep>