簡體   English   中英

Rest API 在 Azure AD B2C 中調用自定義策略

[英]Rest API call in custom policy in Azure AD B2C

我是新手,並嘗試通過調用 REST API 調用來構建自定義登錄策略。

API 需要以下參數作為輸入:client_id=固定值,client_secret=固定值,grant_type=固定值,范圍=固定值,用戶名=變量,密碼=變量

以上參數不是針對 Azure 值的,而是一些需要在請求中發送的固定值。

我在擴展自定義策略中添加了一些部分,但似乎請求正文沒有正確形成,我收到錯誤 The claim exchange User Migration Via Legacy specified in step '1' returned HTTP error response with Code Bad Request and Reason 'Bad要求'。 我在這里做錯了什么? 請幫忙。

添加了我的部分:

  <BuildingBlocks>
<ClaimsSchema>
  <ClaimType Id="RequestBody">
    <DisplayName>Request body</DisplayName>
    <DataType>string</DataType>
    <UserHelpText>RequestBody</UserHelpText>
  </ClaimType>
</ClaimsSchema>
<ClaimsTransformations>
    <ClaimsTransformation Id="GenerateRequestBody" TransformationMethod="GenerateJson">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="username" />
      <InputClaim ClaimTypeReferenceId="password" TransformationClaimType="password" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="client_id" DataType="string" Value="client" />
      <InputParameter Id="client_secret" DataType="string" Value="sec" />
      <InputParameter Id="grant_type" DataType="string" Value="grant" />
      <InputParameter Id="scope" DataType="string" Value="scope" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="RequestBody" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>
<ClaimsProviders>
  <ClaimsProvider>
  <DisplayName>REST API to communicate with Legacy IdP</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="UserMigrationViaLegacyIdp">
      <DisplayName>REST API call to communicate with Legacy IdP</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://</Item>
        <Item Key="AuthenticationType">None</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AllowInsecureAuthInProduction">true</Item>
        <Item Key="ClaimUsedForRequestPayload">RequestBody</Item>
      </Metadata>
      <InputClaimsTransformations>
        <InputClaimsTransformation ReferenceId="GenerateRequestBody" />
      </InputClaimsTransformations>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="RequestBody" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="tokenSuccess" DefaultValue="false" />
        <OutputClaim ClaimTypeReferenceId="migrationRequired" />
      </OutputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

你能分享一下聲明轉換創建的實際 JSON 嗎? 格式是否正確? 在實際將其用作 REST ZDB974238714CA8DE634A7CE1D08 中的輸入聲明之前,您可以通過顯示<InputClaimsTransformation ReferenceId="GenerateRequestBody" />的 output 來簡化故障排除。 這將揭示您的 JSON 格式發生了什么。

為此,首先創建一個自我斷言的技術配置文件並將<InputClaimsTransformation ReferenceId="GenerateRequestBody" />作為 output 聲明轉換添加到它。 您的 output 聲明應該是您稍后將在旅程的下一步中使用的聲明。

在用戶旅程中,添加一個調用自我斷言技術配置文件的步驟。 使用 App Insights 添加下一步以將 output 聲明寫入 App Insights ( https://docs.microsoft.com/en-us/azure/active-directory-b2c/analytics-with-application-insights )

這將記錄 REST API 正在接收的索賠價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM