Gebruikersgedrag bijhouden in Azure AD B2C met behulp van Application Insights

Voordat u begint, gebruikt u de selector Een beleidstype kiezen om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via volledig configureerbaar aangepast beleid. De stappen die in dit artikel zijn vereist, verschillen voor elke methode.

Deze functie is alleen beschikbaar voor aangepast beleid. Voor configuratiestappen selecteert u Aangepast beleid in de voorgaande selector.

In Azure AD B2C (Azure Active Directory B2C) kunt u gebeurtenisgegevens rechtstreeks naar Application Insights verzenden met behulp van de geleverde instrumentatiesleutel voor Azure AD B2C. Met een technisch profiel van Application Insights kunt u gedetailleerde en aangepaste gebeurtenislogboeken ophalen voor gebruikerstrajecten. Hiermee kunt u het volgende doen:

  • Inzicht krijgen in het gebruikersgedrag.
  • Problemen met uw eigen beleid in ontwikkeling of productie oplossen.
  • Prestaties meten.
  • Meldingen maken vanuit Application Insights.

Overzicht

Als u aangepaste gebeurtenislogboeken wilt inschakelen, voegt u een technisch Application Insights-profiel toe. In het technische profiel definieert u de Application Insights-instrumentatiesleutel, de gebeurtenisnaam en de claims die moeten worden vastgelegd. Als u een gebeurtenis wilt posten, voegt u het technische profiel toe als een indelingsstap in een gebruikerstraject.

Houd rekening met het volgende wanneer u Application Insights gebruikt:

  • Er is een korte vertraging, meestal minder dan vijf minuten, voordat nieuwe logboeken beschikbaar zijn in Application Insights.
  • Met Azure AD B2C kunt u kiezen welke claims u wilt vastleggen. Neem geen claims op met persoonlijke gegevens.
  • Als u een gebruikerssessie wilt opnemen, kunt u een correlatie-id gebruiken om gebeurtenissen samen te voegen.
  • Roep het technische Application Insights-profiel rechtstreeks aan vanuit een gebruikersbeleving of een subbeleving. Gebruik geen technisch Application Insights-profiel als technisch profiel voor validatie.

Vereisten

Create an Application Insights resource (Een Application Insights-resource maken)

Wanneer u Application Insights gebruikt met Azure AD B2C, hoeft u alleen maar een resource te maken en de instrumentatiesleutel op te halen. Zie Een Application Insights-resource maken voor meer informatie.

  1. Meld u aan bij de Azure-portal.
  2. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Microsoft Entra ID-tenant in het menu Mappen en abonnementen.
  3. Kies in de linkerbovenhoek van Azure Portal Een resource maken, zoek Application Insights en selecteer dit.
  4. Selecteer Maken.
  5. Voer voor Naam een naam in voor de resource.
  6. Selecteer voor T de optie ASP.NET-webtoepassing.
  7. Selecteer voor Resourcegroep een bestaande groep of voer een naam in voor een nieuwe groep.
  8. Selecteer Maken.
  9. Open de nieuwe Application Insights-resource, vouw Essentials uit en kopieer de instrumentatiesleutel.

Screenshot that shows the Instrumentation Key on the Application Insights Overview tab.

Claims definiëren

Een claim maakt tijdelijke opslag van gegevens mogelijk tijdens de uitvoering van een Azure AD B2C-beleid. U declareert uw claims in het element ClaimsSchema.

  1. Open het uitbreidingsbestand van uw beleid. Het bestand ziet er ongeveer uit als SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Zoek element BuildingBlocks. Als u het element niet ziet, voegt u het toe.

  3. Zoek element ClaimsSchema. Als u het element niet ziet, voegt u het toe.

  4. Voeg de volgende claims toe aan element ClaimsSchema:

    <ClaimType Id="EventType">
      <DisplayName>Event type</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="EventTimestamp">
      <DisplayName>Event timestamp</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="PolicyId">
      <DisplayName>Policy Id</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="Culture">
      <DisplayName>Culture ID</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="CorrelationId">
      <DisplayName>Correlation Id</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="federatedUser">
      <DisplayName>Federated user</DisplayName>
      <DataType>boolean</DataType>
    </ClaimType>
    <ClaimType Id="parsedDomain">
      <DisplayName>Domain name</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>The domain portion of the email address.</UserHelpText>
    </ClaimType>
    <ClaimType Id="userInLocalDirectory">
      <DisplayName>userInLocalDirectory</DisplayName>
      <DataType>boolean</DataType>
    </ClaimType>
    

Nieuwe technische profielen toevoegen

Technische profielen kunnen worden beschouwd als functies in het aangepaste beleid. Deze functies maken gebruik van de methode voor opname van technische profielen, waarbij een technisch profiel een ander technisch profiel bevat en instellingen wijzigt of nieuwe functionaliteit toevoegt. In de volgende tabel worden de technische profielen gedefinieerd die worden gebruikt om een sessie te openen en gebeurtenissen te posten.

Technisch profiel Opdracht
AppInsights-Common Het algemene technische profiel met een typische configuratie. Het bevat de Application Insights-instrumentatiesleutel, een verzameling claims die moeten worden vastgelegd en de ontwikkelaarsmodus. De overige technische profielen bevatten het algemene technische profiel en voegen meer claims toe, zoals de naam van de gebeurtenis.
AppInsights-SignInRequest Registreert een SignInRequest-gebeurtenis met een set claims wanneer een aanmeldingsaanvraag is ontvangen.
AppInsights-UserSignUp Registreert een UserSignUp-gebeurtenis wanneer de gebruiker de registratieoptie activeert in een registratie- of aanmeldingstraject.
AppInsights-SignInComplete Registreert een SignInComplete-gebeurtenis verificatie, wanneer een token is verzonden naar de Relying Party-toepassing.

Open bestand TrustFrameworkExtensions.xml vanuit het beginnerspakket. Voeg de technische profielen toe aan element ClaimsProvider:

<ClaimsProvider>
  <DisplayName>Application Insights</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="AppInsights-Common">
      <DisplayName>Application Insights</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.Insights.AzureApplicationInsightsProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <!-- The ApplicationInsights instrumentation key, which you use for logging the events -->
        <Item Key="InstrumentationKey">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</Item>
        <Item Key="DeveloperMode">false</Item>
        <Item Key="DisableTelemetry ">false</Item>
      </Metadata>
      <InputClaims>
        <!-- Properties of an event are added through the syntax {property:NAME}, where NAME is the property being added to the event. DefaultValue can be either a static value or a value that's resolved by one of the supported DefaultClaimResolvers. -->
        <InputClaim ClaimTypeReferenceId="EventTimestamp" PartnerClaimType="{property:EventTimestamp}" DefaultValue="{Context:DateTimeInUtc}" />
        <InputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="{property:TenantId}" DefaultValue="{Policy:TrustFrameworkTenantId}" />
        <InputClaim ClaimTypeReferenceId="PolicyId" PartnerClaimType="{property:Policy}" DefaultValue="{Policy:PolicyId}" />
        <InputClaim ClaimTypeReferenceId="CorrelationId" PartnerClaimType="{property:CorrelationId}" DefaultValue="{Context:CorrelationId}" />
        <InputClaim ClaimTypeReferenceId="Culture" PartnerClaimType="{property:Culture}" DefaultValue="{Culture:RFC5646}" />
      </InputClaims>
    </TechnicalProfile>

    <TechnicalProfile Id="AppInsights-SignInRequest">
      <InputClaims>
        <!-- An input claim with a PartnerClaimType="eventName" is required. This is used by the AzureApplicationInsightsProvider to create an event with the specified value. -->
        <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="SignInRequest" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="AppInsights-UserSignUp">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="UserSignUp" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="AppInsights-SignInComplete">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="SignInComplete" />
        <InputClaim ClaimTypeReferenceId="federatedUser" PartnerClaimType="{property:FederatedUser}" DefaultValue="false" />
        <InputClaim ClaimTypeReferenceId="parsedDomain" PartnerClaimType="{property:FederationPartner}" DefaultValue="Not Applicable" />
        <InputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="{property:IDP}" DefaultValue="Local" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Belangrijk

Wijzig de instrumentatiesleutel in technisch profiel AppInsights-Common voor de GUID die uw Application Insights-resource biedt.

De technische profielen toevoegen als indelingsstappen

Voeg nieuwe indelingsstappen toe die verwijzen naar de technische profielen.

Belangrijk

Nadat u de nieuwe indelingsstappen hebt toegevoegd, geeft u de stappen nieuwe opeenvolgende nummers zonder gehele getallen van 1 tot N over te slaan.

  1. Roep AppInsights-SignInRequest aan als de tweede indelingsstap. In deze stap wordt bijgehouden dat er een registratie- of aanmeldingsaanvraag is ontvangen.

    <!-- Track that we have received a sign in request -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInRequest" TechnicalProfileReferenceId="AppInsights-SignInRequest" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  2. Voeg vóór indelingsstap SendClaims een nieuwe stap toe die AppInsights-UserSignup aanroept. Deze wordt geactiveerd wanneer de gebruiker de registratieknop selecteert in een registratie- of aanmeldingstraject.

    <!-- Handles the user selecting the sign-up link in the local account sign-in page -->
    <OrchestrationStep Order="8" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>newUser</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
          <Value>newUser</Value>
          <Value>false</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackUserSignUp" TechnicalProfileReferenceId="AppInsights-UserSignup" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  3. Roep na indelingsstap SendClaimsAppInsights-SignInComplete. In deze stap ziet u een voltooid traject.

    <!-- Track that we have successfully sent a token -->
    <OrchestrationStep Order="10" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInComplete" TechnicalProfileReferenceId="AppInsights-SignInComplete" />
      </ClaimsExchanges>
    </OrchestrationStep>
    

Uw bestand uploaden, het beleid uitvoeren gebeurtenissen bekijken

Sla bestand TrustFrameworkExtensions.xml op en upload het. Roep vervolgens het Relying Party-beleid aan vanuit uw toepassing of gebruik Nu uitvoeren in Azure Portal. Wacht tot uw gebeurtenissen beschikbaar zijn in Application Insights.

  1. Open de Application Insights-resource in uw Microsoft Entra-tenant.
  2. Selecteer Gebruik en vervolgens Gebeurtenissen.
  3. Stel Gedurende in op Afgelopen uur en Per op 3 minuten. Mogelijk moet u het venster vernieuwen om de resultaten te zien.

Screenshot that shows Application Insights event statistics.

Meer gegevens verzamelen

U kunt meer claims registreren als u dat voor uw bedrijf nodig acht. Als u een claim wilt toevoegen, definieert u eerst een claim en voegt u vervolgens de claim toe aan de verzameling invoerclaims. Claims die u aan het technische profiel AppInsights-Common toevoegt, worden in alle gebeurtenissen weergegeven. Claims die u aan een specifiek technisch profiel toevoegt, worden alleen in voor die gebeurtenis weergegeven. Het element voor invoerclaim bevat de volgende kenmerken:

  • ClaimTypeReferenceId is de verwijzing naar een claimtype.
  • PartnerClaimType is de naam van de eigenschap die wordt weergegeven in Azure Insights. Gebruik de syntaxis van {property:NAME}, waarbij NAME een eigenschap is die aan de gebeurtenis wordt toegevoegd.
  • DefaultValue is een vooraf gedefinieerde waarde die moet worden vastgelegd, zoals een gebeurtenisnaam. Als een claim die in het gebruikerstraject wordt gebruikt, leeg is, wordt de standaardwaarde gebruikt. Zo wordt bijvoorbeeld claim identityProvider ingesteld door de technische profielen van de federatie, zoals Facebook. Als de claim leeg is, geeft dit aan dat de gebruiker zich heeft aangemeld met een lokaal account. De standaardwaarde wordt dus ingesteld op Lokaal. U kunt ook een claim-resolver vastleggen met een contextuele waarde, zoals de toepassings-id of het IP-adres van de gebruiker.

Claims bewerken

U kunt invoerclaimtransformaties te wijzigen of om nieuwe claims te genereren voordat u ze naar Application Insights verzendt. In het volgende voorbeeld omvat het technische profiel invoerclaimstransfarmatie CheckIsAdmin.

<TechnicalProfile Id="AppInsights-SignInComplete">
  <InputClaimsTransformations>  
    <InputClaimsTransformation ReferenceId="CheckIsAdmin" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="isAdmin" PartnerClaimType="{property:IsAdmin}"  />
    ...
  </InputClaims>
  <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
</TechnicalProfile>

Gebeurtenissen toevoegen

Als u een gebeurtenis wilt toevoegen, maakt u een nieuw technisch profiel dat technisch profiel AppInsights-Common omvat. Voeg vervolgens het nieuwe technische profiel toe als indelingsstap aan de gebruikersbeleving. Gebruik element Voorwaarde om de gebeurtenis te activeren wanneer u klaar bent. Rapporteer bijvoorbeeld alleen de gebeurtenis wanneer gebruikers meervoudige verificatie uitvoeren.

<TechnicalProfile Id="AppInsights-MFA-Completed">
  <InputClaims>
     <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="MFA-Completed" />
  </InputClaims>
  <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
</TechnicalProfile>

Belangrijk

Wanneer u een gebeurtenis toevoegt aan de gebruikersbeleving, moet u de indelingsstappen opnieuw opeenvolgend nummeren.

<OrchestrationStep Order="8" Type="ClaimsExchange">
  <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
    <Value>isActiveMFASession</Value>
    <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="TrackUserMfaCompleted" TechnicalProfileReferenceId="AppInsights-MFA-Completed" />
  </ClaimsExchanges>
</OrchestrationStep>

Ontwikkelmodus inschakelen

Wanneer u Application Insights gebruikt om gebeurtenissen te definiëren, kunt u aangeven of de ontwikkelaarsmodus wordt ingeschakeld. In de ontwikkelaarsmodus wordt bepaald hoe gebeurtenissen worden gebufferd. In een ontwikkelomgeving met een minimaal gebeurtenisvolume leidt het inschakelen van de ontwikkelaarsmodus tot gebeurtenissen die onmiddellijk naar Application Insights worden verzonden. De standaardwaarde is false. Schakel de ontwikkelaarsmodus niet in in productieomgevingen.

Wijzig de DeveloperMode-metagegevens in technische profiel true in AppInsights-Common om de ontwikkelaarsmodus in te schakelen:

<TechnicalProfile Id="AppInsights-Common">
  <Metadata>
    ...
    <Item Key="DeveloperMode">true</Item>
  </Metadata>
</TechnicalProfile>

Telemetrie uitschakelen

Als u Application Insights-logboeken wilt uitschakelen, wijzigt u de DisableTelemetry-metagegevens true in technisch profiel AppInsights-Common:

<TechnicalProfile Id="AppInsights-Common">
  <Metadata>
    ...
    <Item Key="DisableTelemetry">true</Item>
  </Metadata>
</TechnicalProfile>

Volgende stappen

Meer informatie over het maken van aangepaste KPI-dashboards met behulp van Azure Application Insights.