Azure 如何检索用户';广告b2c的同意版本?

Azure 如何检索用户';广告b2c的同意版本?,azure,azure-ad-b2c,Azure,Azure Ad B2c,我正在使用AZure Ad B2C租户,我在注册时有自定义同意字段。这是工作良好,每当我们更新它的提示用户同意 我必须保留用户同意的历史记录。比如说在注册时,user1接受同意(v1)和稍后的user1接受同意(v2),等等 我需要用户接受/拒绝的所有同意的历史记录。那可以取回吗 我试过以下方法 添加了两个扩展声明以及字符串类型的同意字段(因为扩展声明不支持stringcollection) 同意使用条款 一串 复选框多选 临时同意书 一串 同意记录 一串 在signup relyingpa

我正在使用AZure Ad B2C租户,我在注册时有自定义同意字段。这是工作良好,每当我们更新它的提示用户同意

我必须保留用户同意的历史记录。比如说在注册时,user1接受同意(v1)和稍后的user1接受同意(v2),等等

我需要用户接受/拒绝的所有同意的历史记录。那可以取回吗

我试过以下方法

  • 添加了两个扩展声明以及字符串类型的同意字段(因为扩展声明不支持stringcollection)

    
    同意使用条款
    一串
    复选框多选
    临时同意书
    一串
    同意记录
    一串
    
  • 在signup relyingparty部分添加了上述字段

    <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn-withConsent" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <InputClaims>          
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" />
        <OutputClaim ClaimTypeReferenceId="extension_ConsentHistory" />
        <OutputClaim ClaimTypeReferenceId="extension_TempConsent" />
    
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
    
    
    保单简介
    

  • 在用户旅程步骤3中,阅读“AAD UserReadUsingObjectId”技术概要中的上述声明

           <TechnicalProfile Id="AAD-UserReadUsingObjectId">
           <Metadata>
           <Item Key="Operation">Read</Item>
            <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
            </Metadata>
            <IncludeInSso>false</IncludeInSso>
            <InputClaims>
            <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
            </InputClaims>
            <OutputClaims>
    
            <!-- Optional claims -->
            <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
            <OutputClaim ClaimTypeReferenceId="displayName" />
            <OutputClaim ClaimTypeReferenceId="otherMails" />
            <OutputClaim ClaimTypeReferenceId="givenName" />
            <OutputClaim ClaimTypeReferenceId="surname" />
            <OutputClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" /> 
            <OutputClaim ClaimTypeReferenceId="extension_TempConsent" />
            <OutputClaim ClaimTypeReferenceId="extension_ConsentHistory" />
            <OutputClaim ClaimTypeReferenceId="extension_ReadStringFromVP" />
          </OutputClaims>
          <IncludeTechnicalProfile ReferenceId="AAD-Common" />
        </TechnicalProfile>
    
       <TechnicalProfile Id="SelfAsserted-Consent">
          <DisplayName>User Consent</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="ContentDefinitionReferenceId">api.selfasserted.consent</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
          </CryptographicKeys>
          <InputClaims />
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" Required="true" />
            <OutputClaim ClaimTypeReferenceId="extension_TempConsent" DefaultValue="," />
            <OutputClaim ClaimTypeReferenceId="extension_ConsentHistory" DefaultValue="," />
          </OutputClaims>
           <OutputClaimsTransformations>                
                 <OutputClaimsTransformation ReferenceId="AppendConsent" />        
                 <OutputClaimsTransformation ReferenceId="TakeConsentBackup" />             
           </OutputClaimsTransformations>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="AAD-WriteUserConsentByObjectId-ThrowIfNotExists" />
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
    
    
    阅读
    真的
    假的
    
  • 在步骤4中,读取同意值,如果条款是新的,则提示用户接受。在技术概要下面的索赔交换呼叫中

           <TechnicalProfile Id="AAD-UserReadUsingObjectId">
           <Metadata>
           <Item Key="Operation">Read</Item>
            <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
            </Metadata>
            <IncludeInSso>false</IncludeInSso>
            <InputClaims>
            <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
            </InputClaims>
            <OutputClaims>
    
            <!-- Optional claims -->
            <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
            <OutputClaim ClaimTypeReferenceId="displayName" />
            <OutputClaim ClaimTypeReferenceId="otherMails" />
            <OutputClaim ClaimTypeReferenceId="givenName" />
            <OutputClaim ClaimTypeReferenceId="surname" />
            <OutputClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" /> 
            <OutputClaim ClaimTypeReferenceId="extension_TempConsent" />
            <OutputClaim ClaimTypeReferenceId="extension_ConsentHistory" />
            <OutputClaim ClaimTypeReferenceId="extension_ReadStringFromVP" />
          </OutputClaims>
          <IncludeTechnicalProfile ReferenceId="AAD-Common" />
        </TechnicalProfile>
    
       <TechnicalProfile Id="SelfAsserted-Consent">
          <DisplayName>User Consent</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="ContentDefinitionReferenceId">api.selfasserted.consent</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
          </CryptographicKeys>
          <InputClaims />
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" Required="true" />
            <OutputClaim ClaimTypeReferenceId="extension_TempConsent" DefaultValue="," />
            <OutputClaim ClaimTypeReferenceId="extension_ConsentHistory" DefaultValue="," />
          </OutputClaims>
           <OutputClaimsTransformations>                
                 <OutputClaimsTransformation ReferenceId="AppendConsent" />        
                 <OutputClaimsTransformation ReferenceId="TakeConsentBackup" />             
           </OutputClaimsTransformations>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="AAD-WriteUserConsentByObjectId-ThrowIfNotExists" />
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
    
    
    用户同意
    同意
    
  • 在ClaimTransformation中做一些字符串操作

      <ClaimsTransformation Id="TakeConsentBackup" TransformationMethod="FormatStringMultipleClaims">
        <InputClaims>
        <InputClaim ClaimTypeReferenceId="extension_ConsentHistory" TransformationClaimType="inputClaim1" />
        <InputClaim ClaimTypeReferenceId="extension_TempConsent" TransformationClaimType="inputClaim2" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="stringFormat" DataType="string" Value="{1},{0}" />
      </InputParameters>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="extension_ConsentHistory" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
    
     <ClaimsTransformation Id="AppendConsent" TransformationMethod="FormatStringMultipleClaims">
        <InputClaims>
        <InputClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" TransformationClaimType="inputClaim1" />
        <InputClaim ClaimTypeReferenceId="extension_TempConsent" TransformationClaimType="inputClaim2" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="stringFormat" DataType="string" Value="{1}{0}" />
      </InputParameters>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="extension_TempConsent" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
    
    
    
  • 在AAD WriteUserApprovementByObjectID中,ThrowIfNotExists编写了如下扩展声明

    <TechnicalProfile Id="AAD-WriteUserConsentByObjectId-ThrowIfNotExists">
    <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
    </Metadata>
    <IncludeInSso>false</IncludeInSso>
    <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
    </InputClaims>
    <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="extension_TermsOfUseConsented" />         
    <PersistedClaim ClaimTypeReferenceId="extension_ConsentHistory" />
    
    
    写
    真的
    假的
    

  • 在索赔返回时,其显示字符串操纵值(同意时准时) 但是在下次登录时(未经同意),它不会返回扩展字段。仅获取扩展名\u TermsOfuseApproved字段值。

  • 预期的声明扩展仅在策略中操作,而不是从用户输入操作。这是个问题吗

  • 我错过了什么


    提前谢谢

    你好,穆图库马尔。您可以将同意数据发送到吗?谢谢@chrispadget。这很好。有没有办法在Azure AD B2C租户中查看历史记录?您好@Muthukumar。您可以将同意数据发送到吗?谢谢@chrispadget。这很好。有没有办法在Azure AD B2C租户中查看历史记录?