从自定义策略中调用Rest Api [英] Calling Rest Api from Custom Policy

查看:60
本文介绍了从自定义策略中调用Rest Api的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm having problems calling a rest api from a custom policy. I need the data sent into the rest api like the following

{
  "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呼叫

And I'm making the Rest Api call using the following Claims Provider

<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>

看起来好像正在拨打电话,但是体内没有发送任何东西.知道我在做什么错吗?

It looks like the call is being made, however, there is nothing being sent in the body. Any idea what I'm doing wrong?

推荐答案

不幸的是,这发出了错误的错误代码.应该是 PEBCAK ,因为我没有试图在ClaimsTransformation.认为在此发布内容给了我橡胶鸭子调试,我又一步步地发现问题

Unfortunatly, this was issuing the wrong error code. Should have been PEBCAK, as I did not have the claims that I was trying to use in the ClaimsTransformation. Think that posting here gave me a bit of Rubber Duck Debugging, and I walked the flow again spotting the issue

这篇关于从自定义策略中调用Rest Api的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆