Azure ad b2c 确定是否已使用id\u令牌\u提示对用户进行身份验证

Azure ad b2c 确定是否已使用id\u令牌\u提示对用户进行身份验证,azure-ad-b2c,Azure Ad B2c,在我的一次用户旅行中,我实现了通过id_token_hint获取索赔。现在,我们要检查用户是否已在以后使用有效令牌进行了身份验证 我的想法是使用声明转换,如果子声明在IdTokenHint\u ExtractClaims技术概要文件中成功提取,则将声明isTokenAuthentication设置为true 但是,当使用id_token_提示调用策略时,sub声明会添加到声明包中,但是缺少isTokenAuthentication 以下是我当前的步骤: 依赖方 <RelyingParty&

在我的一次用户旅行中,我实现了通过id_token_hint获取索赔。现在,我们要检查用户是否已在以后使用有效令牌进行了身份验证

我的想法是使用声明转换,如果子声明在
IdTokenHint\u ExtractClaims
技术概要文件中成功提取,则将声明
isTokenAuthentication
设置为
true

但是,当使用id_token_提示调用策略时,
sub
声明会添加到声明包中,但是缺少
isTokenAuthentication

以下是我当前的步骤:

依赖方

<RelyingParty>
    <DefaultUserJourney ReferenceId="MyUserJourney" />
    <!--Step 2: Add the following node immediately after the DefaultUserJourney element-->
    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Settings:AppInsightsInstrumentationKey}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <!-- <ScriptExecution>Allow</ScriptExecution> -->
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="sub" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="sub" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

保单简介
提取索赔资料

  <TechnicalProfile Id="IdTokenHint_ExtractClaims">
    <DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
    <Protocol Name="None" />
    <Metadata>
      <Item Key="METADATA">{Settings:id_token_hint_MetadataEndPoint}</Item>
      <Item Key="issuer">{Settings:id_token_hint_Issuer}</Item>
    </Metadata>
    <OutputClaims>
      <!--Read the subject cliam from the id_token_hint-->
      <OutputClaim ClaimTypeReferenceId="sub"/>
    </OutputClaims>
    <OutputClaimsTransformations>
      <OutputClaimsTransformation ReferenceId="CheckIfSubPresent" />
    </OutputClaimsTransformations>
  </TechnicalProfile>

我的身份证提示技术档案
{Settings:id\u token\u hint\u MetadataEndPoint}
{设置:id\u令牌\u提示\u颁发者}
索赔信息

<ClaimsTransformation Id="CheckIfSubPresent" TransformationMethod="DoesClaimExist">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="sub" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isTokenAuthentication" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

你知道问题出在哪里吗?
如果用户使用有效的id\u token\u提示进入流,是否还有其他好方法可以确定?

我不相信IdTokenHint\u ExtractClaims支持输出声明转换

您可以创建:


取消与Facebook的链接
然后将此索赔转换技术配置文件添加到用户旅程的IdTokenHint\u提取索赔后:


...

Hmm,您是否需要为isTokenAuthentication声明指定一个值?@juunas我已经尝试将其传递给依赖方(inputclaim的默认值为false),因此声明从一开始就存在,但是它看起来并没有因为声称的转变而改变。你有没有尝试过在用户旅程中使用Application Insights日志?使用VS代码的B2C扩展,您可以看到转换中发生了什么。是的,但我没有看到getclaims/IdTokenHint\u ExtractClaims步骤被记录。谢谢您的回答!今天早上我也有了这个想法,只是测试了一些类似的东西。工作完美:)