Hey James,
Sure!
This is my ClaimsTransformation to compare both eMail fields:
<ClaimsTransformations>
<ClaimsTransformation Id="AssertEmailAndReenterEmailAddressAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="reenterEmail" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
</InputParameters>
</ClaimsTransformation>
</ClaimsTransformations>
This is the TechnicalProfile which uses the Claims Transformation:
<TechnicalProfiles>
<TechnicalProfile Id="ValidateEmailAddress">
<DisplayName>Check email address twice</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<InputClaims>
<InputClaim ClaimTypeReferenceId="reenterEmail" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertEmailAndReenterEmailAddressAreEqual" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
This is the SelfAsserted User Sign Up Profile using the "ValidateEmailAddress" Profile as a ValidationTechnicalProfile:
<DisplayName>Self Asserted</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="SelfAsserted-UserSignup">
<DisplayName>User signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.selfasserted.signup</Item>
<Item Key="setting.showCancelButton">false</Item>
<Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">The email addresses you provided are not the same.</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<DisplayClaims>
<DisplayClaim ClaimTypeReferenceId="activationCode" Required="true" />
<DisplayClaim ClaimTypeReferenceId="email" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterEmail" Required="true" />
<DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" Required="true" />
<DisplayClaim ClaimTypeReferenceId="extension_PrivacyPolicyConsented" Required="true" />
<DisplayClaim ClaimTypeReferenceId="extension_NewsletterConsented" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" Required="true" />
<OutputClaim ClaimTypeReferenceId="email" Required="true" />
<OutputClaim ClaimTypeReferenceId="reenterEmail" Required="true" />
<OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="activationCode" Required="true" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="ValidateEmailAddress" ContinueOnError="false" />
<ValidationTechnicalProfile ReferenceId="RestApi-ValidateActivationCode" />
<ValidationTechnicalProfile ReferenceId="RestApi-VerifyEmailAddress" />
<ValidationTechnicalProfile ReferenceId="AAD-CreateNewUser" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
</TechnicalProfiles>
The comparison of the eMail works as expected, but I'm not able to get my custom error message displayed.