我们正在使用Azure B2C的自定义注册/登录策略,并且无法尝试使用外语电子邮件地址登录。
我们已经按照Microsoft教程使用了自定义启动器XML文件here。
我们最初发现我们甚至无法使用外语电子邮件地址(例如伊伊伊伊伊伊伊@伊伊伊。伊伊伊)注册,但我们注意到TrustFrameworkBase.xml中有一些正则表达式我们可以操作的启动文件:
<ClaimType Id="email">
<DisplayName>Email Address</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OpenIdConnect" PartnerClaimType="email" />
</DefaultPartnerClaimTypes>
<UserHelpText>Email address that can be used to contact you.</UserHelpText>
<UserInputType>TextBox</UserInputType>
<Restriction>
<Pattern RegularExpression="^[a-zA-Z0-9.!#$%&'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="Please enter a valid email address." />
</Restriction>
</ClaimType>
所以我们改变了正则表达式,我们可以注册!
但是,当我们尝试使用我们刚刚注册的帐户登录时,我们收到一条消息“请输入有效的电子邮件地址”。
我已经尝试了一个开箱即用的香草注册/登录策略,我得到同样的东西。 HTML文本框上有一个正则表达式模式属性,如下所示:
<input type="email" id="logonIdentifier" name="Username or email address" pattern="^[a-zA-Z0-9.!#$%&’'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" placeholder="Email Address" value="" tabindex="1">
这会阻止登录。
如果我进入并删除此模式正则表达式我实际上可以登录,所以我知道它可以工作。我只需要删除此模式属性。
我肯定错过了什么。任何人都可以告诉我我需要配置什么才能使用这样的电子邮件地址登录?
signIn的电子邮件正则表达式模式不是从策略中的ClaimType中的“pattern”属性中提取的。这就是你观察这种行为的原因。
您可以做的是在技术配置文件元数据中添加语言设置,如下所示。
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
...
<Item Key="language.email_pattern">{desired_pattern}</Item>
</Metadata>
….
</TechnicalProfile>