I made the lookup work with querying with an extension attribute (in my case it is the special email we store for MFA purposes extension_mfaEmail)
Some users use username as main identity some use email.
I want to get the username as an output claim. After calling the technical profile: AAD-UserReadUsingMFAEmailAddress, the signinName claim returns the internal user principal name: {guid}@{tenant}.onmicrosoft.com which is not what I am looking for. I need the actual username that the user signs in with.
How do I know which method user uses? (email vs username) and regardless of this how can I read the username? Email is easier to work with but could not find a way for username
SigninNames.username is not recognized in this technical profile. Why?
<TechnicalProfile Id="AAD-UserReadUsingMFAEmailAddress">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="extension_mfaEmail" />
</InputClaims>
<OutputClaims>
<!-- Required claims -->
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
<OutputClaim ClaimTypeReferenceId="signInName" />
<!-- HOW DO I READ USERNAME -->
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
</OutputClaimsTransformations>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
Adding below as output claim worked for me (displayUsername is just a simple readonly string claim that I added to my custom policy)
<OutputClaim ClaimTypeReferenceId="displayUserName" PartnerClaimType="signinNames.username" />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With