如何使用Azure B2C自定义策略在外部IDP登录期间传递和验证signInEmail声明?

这个问题与this one有关。

我们要做的是:在用户单击“登录”页面中的 try { register(user); } catch (ex) { console.log(ex); } }; export const register = async user => { const data = await http.post("http://localhost:8000/api/user/register",user).catch((e) { throw new Error(e); }); console.log(data); return data; }; Facebookmicrosoft account之类的按钮时,调用验证技术资料以验证用户用于登录的Corporate AD地址。

我尝试添加email,如下所示:

OrchestrationStep

这实际上是在调用<OrchestrationStep Order="4" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteactionsIf="false"> <Value>idp</Value> <Value>CorporateAD</Value> <action>SkipthisOrchestrationStep</action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="FetchMoreclaimsExchange" TechnicalProfileReferenceId="REST-ValidateSignInEmail" /> </ClaimsExchanges> </OrchestrationStep> ,因为我看到这样的URL返回错误:

  

https://mywebsite.azurewebsites.net/#error=server_error&error_description=AADB2C%3a++is+disabled.%0d%0aCorrelation+ID%3a+bce3fd82-1111-4f17-ad99-ef7770ed8dda%0d%0aTimestamp%3a+2019-11-08+20%3a34%3a51Z%0d%0a&state=7b7c70e7-7a77-77d7-7d7e-7dd0e7b707e7

消息REST-ValidateSignInEmail来自我放在一起的REST API,但这显然告诉我,电子邮件\ signInEmail声称它期望作为参数未发送\传递。

这是技术资料:

is+disabled

您能否阐明如何实现这一目标?

sayabcd1 回答:如何使用Azure B2C自定义策略在外部IDP登录期间传递和验证signInEmail声明?

通常,在我发布问题后,我都会一直在弄弄代码。

让它像这样工作:

<TechnicalProfile Id="REST-ValidateSignInEmail">
    <DisplayName>Validate Email</DisplayName>
    <Protocol Name="Proprietary" 
            Handler="Web.TPEngine.Providers.RestfulProvider,Web.TPEngine,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
    <Metadata>
       <Item Key="ServiceUrl">{Settings:AzureAppServiceUrl}/api/B2C/ValidateSignInEmail</Item>
       <Item Key="AuthenticationType">None</Item>
       <Item Key="SendClaimsIn">Body</Item>
    </Metadata>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" 
              PartnerClaimType="UserEmail" />
        </InputClaims>
        <InputClaim ClaimTypeReferenceId="email" 
              PartnerClaimType="UserEmail" />
        </InputClaims>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

请注意,我在InputClaim中添加了一个新的ClaimTypeReferenceId="email"email是使用外部IDP时传递的声明值。

sample policy向我展示了我可以在OrchestrationStep之前添加JwtIssuer。我们也可以在没有任何此类先决条件的情况下拥有它:

<OrchestrationStep Order="7" 
   Type="ClaimsExchange">
   <ClaimsExchanges>
     <ClaimsExchange Id="REST-ValidateSignInEmail" 
       TechnicalProfileReferenceId="REST-ValidateSignInEmail" />
   </ClaimsExchanges>
 </OrchestrationStep>

这样做会被所有IDP调用。


Azure Active Directory B2C: Custom CIAM User Journeys

本文链接:https://www.f2er.com/3135165.html

大家都在问