【问题标题】:Calling Rest Api from Custom Policy从自定义策略调用 Rest Api
【发布时间】:2020-07-20 08:46:48
【问题描述】:

我在从自定义策略调用 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>

看起来正在调用,但是在正文中没有发送任何内容。知道我做错了什么吗?

【问题讨论】:

    标签: azure-ad-b2c


    【解决方案1】:

    不幸的是,这发出了错误的错误代码。应该是PEBCAK,因为我没有尝试在 ClaimsTransformation 中使用的声明。认为这里发帖给了我一点Rubber Duck Debugging,然后我又顺着流程发现了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多