大佬教程收集整理的这篇文章主要介绍了DisplayControl - 验证未使用的电子邮件 - Azure AD B2C,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我们的注册自定义政策中发送验证码之前,我收到了一个请求,要求验证电子邮件未被使用。 在我们的密码重置策略中,我们使用 displayControl 在发送 OTP 代码之前检查密码是否存在,并且仅在电子邮件已注册时发送 OTP。但是,我需要在注册过程中做相反的事情,只有在电子邮件尚未注册的情况下才发送代码。
我尝试使用以下内容:
<displayControl ID="emailVerificationControlSignUp" UserInterfaceControlType="VerificationControl">
<inputClaims>
<inputClaim ClaimTypeReferencEID="emailAddress" />
</inputClaims>
<displayClaims>
<displayClaim ClaimTypeReferencEID="emailAddress" ControlClaimType="Email" required="true" />
<displayClaim ClaimTypeReferencEID="verificationCode" ControlClaimType="VerificationCode" required="true" />
</displayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferencEID="azureMfaSessionID" />
</OutputClaims>
<Actions>
<!--Before generaTing and sending an OTP,we first take the users email and lookup the directory for a user. If a user is returned we will have the objectID claim in the claimbag-->
<Action ID="SendCode">
<ValIDationClaimsExchange>
<ValIDationClaimsExchangeTechnicalProfile TechnicalProfileReferencEID="AAD-UserReadUsingEmailAddress-emailadressExist" ConTinueOnError="true" ConTinueOnsuccess="false" />
<ValIDationClaimsExchangeTechnicalProfile TechnicalProfileReferencEID="Aadsspr-SendCode">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectID</Value>
<Action>SkipThisValIDationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValIDationClaimsExchangeTechnicalProfile>
</ValIDationClaimsExchange>
</Action>
<Action ID="VerifyCode">
<ValIDationClaimsExchange>
<ValIDationClaimsExchangeTechnicalProfile TechnicalProfileReferencEID="Aadsspr-VerifyCode" />
</ValIDationClaimsExchange>
</Action>
</Actions>
</displayControl>
和这个技术简介
<TechnicalProfile ID="AAD-UserReadUsingEmailAddress-emailadressExist">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="raiseerrorIfClaimsPrincipaLALReadyExists">true</Item>
<!--<Item Key="UsermessageIfClaimsPrincipalDoesnotExist">UsermessageIfClaimsPrincipalDoesnotExist</Item>
<Item Key="UsermessageIfClaimsPrincipaLALReadyExists">UsermessageIfClaimsPrincipaLALReadyExists</Item>-->
</Metadata>
<IncludeInSso>false</IncludeInSso>
<inputClaims>
<inputClaim ClaimTypeReferencEID="emailAddress" PartnerClaimType="signInnames.emailAddress" required="true" />
</inputClaims>
<OutputClaims>
<!-- required claims -->
<OutputClaim ClaimTypeReferencEID="objectID" />
<OutputClaim ClaimTypeReferencEID="authentication@R_489_9016@e" DefaultValue="localAccountAuthentication" />
<!-- Optional claims -->
<OutputClaim ClaimTypeReferencEID="userPrincipalname" />
<OutputClaim ClaimTypeReferencEID="displayname" />
<OutputClaim ClaimTypeReferencEID="otherMails" />
<OutputClaim ClaimTypeReferencEID="signInnames.emailAddress" />
</OutputClaims>
<IncludeTechnicalProfile ReferencEID="AAD-Common" />
</TechnicalProfile>
实际情况是,只有在电子邮件尚未注册时才会发送 OTP,但是,即使电子邮件已注册,displayControl 也会始终更改以显示“验证代码/发送新代码”按钮。所以,最后会发生的情况是,如果电子邮件已被注册,则用户不会获得 OTP,只有在电子邮件尚未注册的情况下。然而,屏幕上并没有告诉用户这一点。
电子邮件已注册,用户应该看到错误消息而不是验证/发送新代码按钮如何修复此 displayControl?
谢谢
感谢您的联系。从上面共享的 DisplayControl 元素中,我可以看到用户已经从这一行准备好了:
<ValidationClaimsExchangeTechnicalProfile TechnicalProfileReferencEID="AAD-UserReadUsingEmailAddress-emailadressExist" ConTinueOnError="true" ConTinueOnsuccess="false" />
用户读取后,检查objectid是否存在->调用claimTransform
AadSspr-SendCode
注意:不建议使用此方法,因为它可用于收集电子邮件。推荐的在所有情况下发送电子邮件进行注册的方法。
以上是大佬教程为你收集整理的DisplayControl - 验证未使用的电子邮件 - Azure AD B2C全部内容,希望文章能够帮你解决DisplayControl - 验证未使用的电子邮件 - Azure AD B2C所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。