在Azure AD B2C中,有单独的策略用于"注册/登录"和"密码重置"。我复制了元数据端点,用于"注册/登录"政策
并将其粘贴到Azure App身份验证
中这基本上有效,但没有地方可以放入密码重置元数据,其中包含密码重置模板。我认为,因此,当您点击"忘记密码"时,您最终会
尝试转至/xxx.onmicrosoft.com/B2C_1_b2c_sign_up_sign_in/api/CombinedSigninAndSignup/forgotPassword?csrf_token=xxx&p=B2C_1_b2c_sign_up_sign_in 时,在〜/ .auth / login / aad / callback上您无权查看此目录或页面。
为什么没有登录/注册/密码重置?
另外,另一个奇怪的事情是点击创建一个新帐户。
如果按“取消”,它将再次进入回拨需要权限页面。
我下载了这些政策,密码重置具有以下内容,但不在登录
中<UserJourneys>
<UserJourney Id="B2CPasswordResetV1">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.idpselections">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="PasswordResetUsingEmailAddressExchange" />
</ClaimsProviderSelections>
</OrchestrationStep>
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
<RelyingParty>
<DefaultUserJourney ReferenceId="B2CPasswordResetV1" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="emails" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="trustFrameworkPolicy" Required="true" DefaultValue="{policy}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
更新。我刚发现这个
当您创建注册或登录策略(使用本地帐户)时, 消费者会看到&#34;忘记密码?&#34;链接在第一页上 经验。点击此链接不会自动触发a 密码重置策略。而是一个特定的错误代码AADB2C90118 回到你的应用程序。您的应用需要处理此问题并调用 特定密码重置策略。一个证明这一点的样本 将政策联系在一起的方法就在这里。
看起来它被发布到回调。所以似乎zumo回调无法处理错误。如果zumo回调获得状态/代码/ id_token,那么它就完成了。
答案 0 :(得分:1)
不幸的是,B2C的集成App Service支持不允许您的应用处理错误回调以重定向到您的重置密码策略。您现在的选择是:
/.auth/login/aad?p=B2C_1_B2CPasswordResetV1
来调用密码重置策略。我在这篇博客评论中写了一个#2的快速示例:https://cgillum.tech/2016/08/10/app-service-auth-and-azure-ad-b2c-part-2/#comment-581
以下是我分享的web.config片段,其中显示了如何处理此错误并重定向到移动后端的静态页面:
<configuration>
<system.webServer>
<httpErrors defaultResponseMode="File" errorMode="Custom" >
<clear />
<error statusCode="401" subStatusCode="73" path="MyPage.html" />
</httpErrors>
<system.webServer>
</configuration>
其他响应模式也可用,包括 ExecuteURL 和重定向。其中一个可能比我使用文件的示例更合适,具体取决于您的需求。有关IIS自定义错误的更多详细信息,请访问:https://www.iis.net/configreference/system.webserver/httperrors#005。