将Azure AD B2C与Azure移动应用程序一起使用时,如何设置密码策略?

时间:2017-03-07 08:09:41

标签: azure azure-mobile-services azure-ad-b2c

在Azure AD B2C中,有单独的策略用于"注册/登录"和"密码重置"。我复制了元数据端点,用于"注册/登录"政策

enter image description here

并将其粘贴到Azure App身份验证

enter image description here

这基本上有效,但没有地方可以放入密码重置元数据,其中包含密码重置模板。我认为,因此,当您点击"忘记密码"时,您最终会

  

您无权查看此目录或页面。

尝试转至/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上

为什么没有登录/注册/密码重置?

enter image description here

另外,另一个奇怪的事情是点击创建一个新帐户。

enter image description here

如果按“取消”,它将再次进入回拨需要权限页面。

我下载了这些政策,密码重置具有以下内容,但不在登录

<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,那么它就完成了。

enter image description here

1 个答案:

答案 0 :(得分:1)

不幸的是,B2C的集成App Service支持不允许您的应用处理错误回调以重定向到您的重置密码策略。您现在的选择是:

  1. 使用自定义CSS或
  2. 删除重置密码链接
  3. 在web.config中配置自定义错误处理程序,处理错误并允许最终用户通过将其重定向到/.auth/login/aad?p=B2C_1_B2CPasswordResetV1来调用密码重置策略。
  4. 我在这篇博客评论中写了一个#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