我想使用B2C自定义策略,允许用户使用Google进行注册和登录,但限制为一组已知的电子邮件域名,否则会出现错误。
这是我尝试过的:
<Restrictions>
和正则表达式。这些似乎仅适用于自我主张。ValidationTechnicalProfile
的技术资料中添加ClaimsProvider
。再次,这些似乎仅适用于自动声明技术简介。SelfAsserted-Social
技术资料中,该资料在Google后面运行。这是最有希望的。我会收到验证失败的消息,但仅在我从不跳过此步骤的情况下。由于用户已经存在,因此具有中断登录的作用。我的验证声明转换看起来像这样。 (我暂时只限于一个域。)
<ClaimsTransformation Id="ExtractDomain" TransformationMethod="ParseDomain">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domain" TransformationClaimType="domain" />
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="AssertDomainEqual" TransformationMethod="AssertStringClaimsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="acceptableDomain" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
</InputParameters>
</ClaimsTransformation>
和我的TechnicalProfile
:
<TechnicalProfile Id="Validate-Email">
<DisplayName>Validate email address</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<InputClaims>
<InputClaim ClaimTypeReferenceId="acceptableDomain" DefaultValue="myacceptabledomain.com" />
<InputClaim ClaimTypeReferenceId="domain" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertDomainEqual" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
我要按照正确的方式进行吗?
是否可以无声地验证声明(无需自声明步骤)?
有没有这样的例子?我唯一能找到的是用于验证本地帐户的电子邮件地址。