Dela via


Spåra användarbeteende i Azure AD B2C med hjälp av Application Insights

Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.

Den här funktionen är endast tillgänglig för anpassade principer. För installationssteg väljer du Anpassad princip i föregående väljare.

I Azure Active Directory B2C (Azure AD B2C) kan du skicka händelsedata direkt till Application Insights med hjälp av instrumentationsnyckeln som tillhandahålls till Azure AD B2C. Med en teknisk Application Insights-profil kan du få detaljerade och anpassade händelseloggar för dina användarresor till:

  • Få insikter om användarbeteende.
  • Felsöka dina egna principer i utveckling eller produktion.
  • Mät prestanda.
  • Skapa meddelanden från Application Insights.

Översikt

Om du vill aktivera anpassade händelseloggar lägger du till en teknisk Application Insights-profil. I den tekniska profilen definierar du Instrumentationsnyckeln för Application Insights, händelsenamnet och anspråken som ska registreras. Om du vill publicera en händelse lägger du till den tekniska profilen som ett orkestreringssteg i en användarresa.

Tänk på följande när du använder Application Insights:

  • Det är en kort fördröjning, vanligtvis mindre än fem minuter, innan nya loggar är tillgängliga i Application Insights.
  • Med Azure AD B2C kan du välja vilka anspråk som ska registreras. Inkludera inte anspråk med personuppgifter.
  • Om du vill registrera en användarsession kan du använda ett korrelations-ID för att förena händelser.
  • Anropa den tekniska Profilen för Application Insights direkt från en användarresa eller en underresa. Använd inte en teknisk Application Insights-profil som en teknisk valideringsprofil.

Förutsättningar

Skapa en Application Insights-resurs

När du använder Application Insights med Azure AD B2C behöver du bara skapa en resurs och hämta instrumentationsnyckeln. Mer information finns i Skapa en Application Insights-resurs.

  1. Logga in på Azure-portalen.
  2. Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Microsoft Entra-ID-klient från menyn Kataloger + prenumerationer.
  3. Välj Skapa en resurs i det övre vänstra hörnet av Azure-portalen och sök sedan efter och välj Application Insights.
  4. Välj Skapa.
  5. Som Namn anger du ett namn för resursen.
  6. Som Programtyp väljer du ASP.NET webbprogram.
  7. För Resursgrupp väljer du en befintlig grupp eller anger ett namn för en ny grupp.
  8. Välj Skapa.
  9. Öppna den nya Application Insights-resursen, expandera Essentials och kopiera instrumentationsnyckeln.

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

Definiera anspråk

Ett anspråk ger tillfällig lagring av data under en Azure AD B2C-principkörning. Du deklarerar dina anspråk i elementet ClaimsSchema.

  1. Öppna tilläggsfilen för principen. Filen kan se ut ungefär som SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Sök efter elementet BuildingBlocks . Om du inte ser elementet lägger du till det.

  3. Leta upp elementet ClaimsSchema . Om du inte ser elementet lägger du till det.

  4. Lägg till följande anspråk i elementet 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>
    

Lägga till nya tekniska profiler

Tekniska profiler kan betraktas som funktioner i den anpassade principen. Dessa funktioner använder metoden för teknisk profilinkludering , där en teknisk profil innehåller en annan teknisk profil och ändrar inställningar eller lägger till nya funktioner. I följande tabell definieras de tekniska profiler som används för att öppna en session och publicera händelser.

Teknisk profil Uppgift
AppInsights-Common Den vanliga tekniska profilen med typisk konfiguration. Den innehåller Instrumentationsnyckeln för Application Insights, en samling anspråk att registrera och utvecklarläge. De andra tekniska profilerna inkluderar den gemensamma tekniska profilen och lägger till fler anspråk, till exempel händelsenamnet.
AppInsights-SignInRequest Registrerar en SignInRequest-händelse med en uppsättning anspråk när en inloggningsbegäran har tagits emot.
AppInsights-UserSignUp Registrerar en UserSignUp-händelse när användaren utlöser registreringsalternativet i en registrerings- eller inloggningsresa.
AppInsights-SignInComplete Registrerar en SignInComplete-händelse vid lyckad autentisering, när en token har skickats till det förlitande partprogrammet.

Öppna filen TrustFrameworkExtensions.xml från startpaketet. Lägg till de tekniska profilerna i elementet 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>

Viktigt!

Ändra instrumentationsnyckeln i den AppInsights-Common tekniska profilen till det GUID som din Application Insights-resurs tillhandahåller.

Lägg till de tekniska profilerna som orkestreringssteg

Lägg till nya orkestreringssteg som refererar till de tekniska profilerna.

Viktigt!

När du har lagt till de nya orkestreringsstegen numrerar du om stegen sekventiellt utan att hoppa över några heltal från 1 till N.

  1. Anropa AppInsights-SignInRequest som det andra orkestreringssteget. Det här steget spårar att en registrerings- eller inloggningsbegäran har tagits emot.

    <!-- Track that we have received a sign in request -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInRequest" TechnicalProfileReferenceId="AppInsights-SignInRequest" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  2. Innan orkestreringssteget SendClaims lägger du till ett nytt steg som anropar AppInsights-UserSignup. Den utlöses när användaren väljer registreringsknappen i en registrerings- eller inloggningsresa.

    <!-- 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. Efter orkestreringssteget SendClaims anropar du AppInsights-SignInComplete. Det här steget visar en slutförd resa.

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

Ladda upp filen, kör principen och visa händelser

Spara och ladda upp filen TrustFrameworkExtensions.xml . Anropa sedan principen för förlitande part från ditt program eller använd Kör nu i Azure-portalen. Vänta tills dina händelser är tillgängliga i Application Insights.

  1. Öppna Application Insights-resursen i din Microsoft Entra-klientorganisation.
  2. Välj Användning och sedan Händelser.
  3. Ange Under till Senaste timme och Av till 3 minuter. Du kan behöva uppdatera fönstret för att se resultatet.

Screenshot that shows Application Insights event statistics.

Samla in mer data

För att passa dina affärsbehov kanske du vill registrera fler anspråk. Om du vill lägga till ett anspråk definierar du först ett anspråk och lägger sedan till anspråket i insamlingen av indataanspråk. Anspråk som du lägger till i den tekniska profilen AppInsights-Common visas i alla händelser. Anspråk som du lägger till i en specifik teknisk profil visas endast i den händelsen. Indataanspråkelementet innehåller följande attribut:

  • ClaimTypeReferenceId är referensen till en anspråkstyp.
  • PartnerClaimType är namnet på egenskapen som visas i Azure Insights. Använd syntaxen för {property:NAME}, där NAME är en egenskap som läggs till i händelsen.
  • DefaultValue är ett fördefinierat värde som ska registreras, till exempel ett händelsenamn. Om ett anspråk som används i användarresan är tomt används standardvärdet. Anspråket identityProvider anges till exempel av federationens tekniska profiler, till exempel Facebook. Om anspråket är tomt anger det att användaren har loggat in med ett lokalt konto. Standardvärdet är därför inställt på Lokal. Du kan också registrera en anspråkslösare med ett kontextuellt värde, till exempel program-ID:t eller användarens IP-adress.

Manipulera anspråk

Du kan använda omvandlingar av indataanspråk för att ändra indataanspråken eller generera nya innan du skickar dem till Application Insights. I följande exempel innehåller den tekniska profilen transformering av CheckIsAdmin indataanspråk.

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

Lägga till händelser

Om du vill lägga till en händelse skapar du en ny teknisk profil som innehåller den AppInsights-Common tekniska profilen. Lägg sedan till den nya tekniska profilen som ett orkestreringssteg i användarresan. Använd elementet Villkor för att utlösa händelsen när du är redo. Rapportera till exempel bara händelsen när användare kör via multifaktorautentisering.

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

Viktigt!

När du lägger till en händelse i användarresan bör du komma ihåg att numrera om orkestreringsstegen sekventiellt.

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

Aktivera utvecklarläge

När du använder Application Insights för att definiera händelser kan du ange om utvecklarläget är aktiverat. Utvecklarläget styr hur händelser buffrads. I en utvecklingsmiljö med minimal händelsevolym resulterar aktivering av utvecklarläge i att händelser skickas omedelbart till Application Insights. Standardvärdet är false. Aktivera inte utvecklarläge i produktionsmiljöer.

Om du vill aktivera utvecklarläge ändrar du DeveloperMode metadata till true i den AppInsights-Common tekniska profilen:

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

Inaktivera telemetri

Om du vill inaktivera Application Insights-loggar ändrar du DisableTelemetry metadata till true i den AppInsights-Common tekniska profilen:

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

Nästa steg

Lär dig hur du skapar anpassade KPI-instrumentpaneler med Hjälp av Azure Application Insights.