从自定义策略中调用Rest Api

时间:2020-07-20 08:46:48

标签: azure-ad-b2c

我在通过自定义策略调用rest api时遇到问题。我需要将数据发送到其余的api中,如下所示:

{
  "correlationId": "123456",
  "message": {
    "email": "test@somedomain.com"
  }
}

我有以下索赔转换

<ClaimsTransformation Id="GenerateGetAadRequestBody" TransformationMethod="GenerateJson">

    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="message.emailAddress" />
      <InputClaim ClaimTypeReferenceId="correlationId" TransformationClaimType="correlationId" />
    </InputClaims>

    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="getAadRequestBody" TransformationClaimType="outputClaim"/>
    </OutputClaims>

</ClaimsTransformation>

我正在使用以下声明提供程序进行Rest Api呼叫

<ClaimsProvider>
  <DisplayName>Custom REST API</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="RestApiGetAad">
      <DisplayName>Call the Rest API</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:RestApiGetAadUrl}</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="ClaimUsedForRequestPayload">getAadRequestBody</Item>
        <Item Key="ResolveJsonPathsInJsonTokens">true</Item>
        <Item Key="DebugMode">{Settings:RestDebugMode}</Item>
        <Item Key="DefaultUserMessageIfRequestFailed">Cannot process your request right now, please try again later.</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="{Settings:RestApiUserName}" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="{Settings:RestApiPassword}" />
      </CryptographicKeys>

      <InputClaimsTransformations>
        <InputClaimsTransformation ReferenceId="GenerateGetAadRequestBody" />
      </InputClaimsTransformations>

      <InputClaims>
        <InputClaim ClaimTypeReferenceId="getAadRequestBody" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="useAAD" PartnerClaimType="content.UseAad" Required="true" />
      </OutputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

似乎正在拨打电话,但是体内没有发送任何东西。知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,这发出了错误的错误代码。应该是PEBCAK,因为我没有在ClaimsTransformation中尝试使用的声明。认为在这里发布内容给了我Rubber Duck Debugging,然后我又一步步地找出了问题所在