当前位置: 首页 > 知识库问答 >
问题:

Azure AD B2C自定义策略:REST技术配置文件验证不起作用

蒲功
2023-03-14

我已经为Azure AD B2C注册创建了一个自定义策略,目标是只允许其电子邮件被列入白名单的用户能够注册到系统中。

为此,我使用REST技术配置文件配置了自定义策略。

我遵循这个指南:https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-rest-api-claims-exchange?pivots=b2c-custom-policy

关联的web服务接收想要注册的用户的电子邮件,并验证该用户的电子邮件地址是否属于已列入白名单的电子邮件列表的一部分。如果不是,我将返回以下格式的消息:

{
    "userMessage": "Sorry, this email is not whitelisted",
    "status": 409,
    "version": "1.0.0"
}

如果电子邮件是白名单的一部分,我将返回:

{
   "emailValue": "myemail@email.com",
   "isWhiteListed": true
}

下面是我的用户旅程的样子(在Signup.xml文件中):

  <UserJourneys>
    <UserJourney Id="SignUp">
      <OrchestrationSteps>

        <OrchestrationStep Order="1" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
          </ClaimsExchanges>
        </OrchestrationStep>

        <!-- This step reads any user attributes that we may not have received when in the token. -->
        <OrchestrationStep Order="2" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
          </ClaimsExchanges>
        </OrchestrationStep>

        <OrchestrationStep Order="3" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="RESTEmailWhitelist" TechnicalProfileReferenceId="REST-EmailWhitelist" />
          </ClaimsExchanges>
        </OrchestrationStep>

        <OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />

      </OrchestrationSteps>
      <ClientDefinition ReferenceId="DefaultWeb" />
    </UserJourney>
  </UserJourneys>

问题是,即使在返回409错误以防电子邮件未被列入白名单之后,它仍然在Azure AD B2C中成功创建。

如何防止成功创建用户帐户?

共有1个答案

黄沈浪
2023-03-14

您可能正在运行“AAD UserwriteUsingEmail”验证技术配置文件两次,一次在REST调用之前,一次在它之后。在LocalAccountSignUpWithLogonEmail技术配置文件中删除基础文件中的验证技术配置文件。然后将验证技术配置文件(AAD userWriteUsingEmail和restapi)按正确顺序放入扩展文件localaccountsignupithlogonemail技术配置文件中(REST然后写入)。

 类似资料:
  • 我在Angular中有一个自定义验证的表单构建器,但我在自定义验证中读取文件后无法获取文件的类型。 下面是StackBlitz: https://stackblitz.com/edit/Angular-ivy-atwqqc?file=src%2fapp%2fapp.component.ts TS文件

  • 我正在尝试学习自定义验证。下面是简单的代码: 当我试图通过rails控制台插入数据时, 2.3.0 :014 它让我插入数据。我应该做些什么来使我的自定义验证方法起作用?

  • 我对自定义约束验证器中的bean自动连接有一个问题。约束验证器实例不是使用Spring的LocalValidatorFactoryBean提供的。JSR-303提供程序是hibernate validator 4.2.0。最终的 Spring配置摘录: 自定义约束验证器: 注释: 一些服务: SomeServiceImpl: SomeTypeService是另一个不依赖于SomeService的@

  • 我试图用Hibernate Validation 6.0.1定义约束定义,其中验证器位于相对于约束注释的不同位置(.jar/项目)。Aka,我有我想要验证的对象,它们位于带有注释定义的项目“api”中,但我将在项目“modules/common”中有验证器 我遵循文档中的描述。 配置文件 约束注释 验证器 我的问题我的问题是,如果我没有将“@约束(validatedby={})”放在注释中,我会得

  • 除了 内置的 20 种 常用技术指标外,用户也可以很方便的编写自己的技术指标,下面以线性回归算法为例,详细讲解如何自定义自己的技术指标。 创建自己的技术指标数据列 创建技术指标数据列主要包含两个步骤: 继承技术指标类 实现技术指标算法

  • 我创建了一个新的注释来验证控制器上的参数: 这是我的验证器: 这是我的控制器: 我的控制器注释为: 我还有一个建议控制器,我打算用它来捕捉抛出的异常: 我在控制台上得到的是: pom.xml中的依赖关系: 谁能告诉我我错过了什么?