Melacak perilaku pengguna di AAD B2C menggunakan Application Insights

Sebelum memulai, gunakan pemilih Pilih jenis kebijakan untuk memilih jenis kebijakan yang Anda siapkan. Azure Active Directory B2C menawarkan dua metode untuk menentukan cara pengguna berinteraksi dengan aplikasi Anda: melalui alur pengguna yang telah ditentukan sebelumnya atau melalui kebijakan kustom yang sepenuhnya dapat dikonfigurasi. Langkah yang diperlukan dalam artikel ini berbeda untuk setiap metode.

Fitur ini tersedia hanya untuk kebijakan kustom. Untuk langkah-langkah penyiapan, pilih Kebijakan kustom dalam pemilih sebelumnya.

Di Azure Active Directory B2C (Azure AD B2C), Anda dapat mengirim data peristiwa langsung ke Application Insights menggunakan kunci instrumentasi yang disediakan untuk Azure AD B2C. Dengan profil teknis Application Insights, Anda dapat memperoleh log peristiwa terperinci dan disesuaikan untuk perjalanan pengguna Anda guna:

  • Dapatkan wawasan tentang perilaku pengguna.
  • Pecahkan masalah kebijakan Anda sendiri dalam pengembangan atau produksi.
  • Ukur performa.
  • Buat pemberitahuan dari Application Insights.

Gambaran Umum

Untuk mengaktifkan log peristiwa kustom, tambahkan profil teknis Application Insights. Di profil teknis, Anda menentukan kunci instrumentasi Application Insights, nama peristiwa, dan klaim yang akan didata. Untuk memposting acara, tambahkan profil teknis sebagai langkah orkestrasi dalam perjalanan pengguna.

Saat Anda menggunakan Application Insights, pertimbangkan hal berikut:

  • Ada penundaan singkat, biasanya kurang dari lima menit, sebelum log baru tersedia di Application Insights.
  • Azure AD B2C memungkinkan Anda memilih klaim yang akan didata. Jangan sertakan klaim dengan data pribadi.
  • Untuk merekam sesi pengguna, Anda dapat menggunakan ID korelasi untuk menyatukan peristiwa.
  • Hubungi profil teknis Application Insights langsung dari perjalanan pengguna atau sub perjalanan. Jangan gunakan profil teknis Application Insights sebagai profil teknis validasi.

Prasyarat

Siapkan sumber daya Application Insights

Saat Anda menggunakan Application Insights dengan Azure AD B2C, yang perlu Anda lakukan adalah membuat sumber daya dan mendapatkan kunci instrumentasi. Untuk informasi, lihat Membuat sumber daya Application Insights.

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa ID Microsoft Entra Anda dari menu Direktori + langganan.
  3. PilihBuat sumber daya di sudut kiri atas portal Azure, lalu cari dan pilih Application Insights.
  4. Pilih Buat.
  5. Untuk Nama,masukkan nama untuk sumber daya.
  6. Untuk Jenis Aplikasi, pilih aplikasi web ASP.NET.
  7. Untuk Grup Sumber Daya, pilih grup yang sudah ada atau masukkan nama untuk grup baru.
  8. Pilih Buat.
  9. Buka sumber daya Application Insights baru, perluas Essentials,dan salin kunci instrumentasi.

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

Tentukan klaim

Klaim menyediakan penyimpanan data sementara selama eksekusi kebijakan Azure AD B2C. Anda menyatakan klaim Anda dalam elemen ClaimsSchema.

  1. Buka file ekstensi kebijakan Anda. File mungkin terlihat mirip dengan SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Cari elemen BuildingBlocks. Jika Anda tidak melihat elemennya, tambahkan elemen tersebut.

  3. Temukan elemen ClaimsSchema. Jika Anda tidak melihat elemennya, tambahkan elemen tersebut.

  4. Tambahkan klaim berikut ke elemen 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>
    

Tambahkan profil teknis baru

Profil teknis dapat dianggap fungsi dalam kebijakan kustom. Fungsi-fungsi ini menggunakan pendekatan inklusi profil teknis, di mana profil teknis menyertakan profil teknis lain dan mengubah pengaturan atau menambahkan fungsionalitas baru. Tabel berikut menentukan profil teknis yang digunakan untuk membuka sesi dan memposting peristiwa.

Profil teknis Tugas
AppInsights-Common Profil teknis umum dengan konfigurasi umum. Ini termasuk kunci instrumentasi Application Insights, kumpulan klaim yang akan dicatat, dan mode pengembang. Profil teknis lainnya mencakup profil teknis umum dan menambahkan lebih banyak klaim, seperti nama peristiwa.
AppInsights-SignInRequest Mencatat peristiwa SignInRequest dengan serangkaian klaim saat permintaan masuk telah diterima.
AppInsights-UserSignUp Merekam peristiwa UserSignUp saat pengguna memicu opsi pendaftaran dalam perjalanan pendaftaran atau masuk.
AppInsights-SignInComplete Merekam peristiwa SignInComplete setelah autentikasi berhasil, ketika token telah dikirim ke aplikasi pihak pengandal.

Buka file TrustFrameworkExtensions.xml dari paket pemula. Tambahkan profil teknis ke elemen 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>

Penting

Ubah kunci instrumentasi di AppInsights-Commonprofil teknis ke GUID yang disediakan sumber daya Application Insights Anda.

Tambahkan profil teknis sebagai langkah orkestrasi

Tambahkan langkah orkestrasi baru yang merujuk ke profil teknis.

Penting

Setelah Anda menambahkan langkah-langkah orkestrasi baru, ulangi langkah-langkah secara berurutan tanpa melewati bilangan bulat dari 1 ke N.

  1. Panggil AppInsights-SignInRequest sebagai langkah orkestrasi kedua. Langkah ini melacak bahwa permintaan pendaftaran atau masuk telah diterima.

    <!-- Track that we have received a sign in request -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInRequest" TechnicalProfileReferenceId="AppInsights-SignInRequest" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  2. Sebelum SendClaims langkah orkestrasi, tambahkan langkah baru yang memanggil AppInsights-UserSignup. Hal ini dipicu ketika pengguna memilih tombol pendaftaran dalam perjalanan pendaftaran atau masuk.

    <!-- 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. Setelah SendClaims langkah orkestrasi, panggil AppInsights-SignInComplete. Langkah ini menunjukkan perjalanan yang berhasil diselesaikan.

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

Unggah file Anda, jalankan kebijakan, dan lihat peristiwa

Simpan dan unggah file TrustFrameworkExtensions.xml. Kemudian hubungi kebijakan pihak pengandal dari aplikasi Anda atau gunakan Jalankan Sekarang di portal Azure. Tunggu peristiwa Anda tersedia di Application Insights.

  1. Buka sumber daya Application Insights di penyewa Microsoft Entra Anda.
  2. Pilih Penggunaan, lalu pilih Peristiwa.
  3. Atur Selama ke Jam Terakhir danOleh ke 3 menit. Anda mungkin perlu menyegarkan jendela untuk melihat hasilnya.

Screenshot that shows Application Insights event statistics.

Kumpulkan lebih banyak data

Agar sesuai dengan kebutuhan bisnis Anda, Anda mungkin ingin mencatat lebih banyak klaim. Untuk menambahkan klaim, pertama-tama tentukan klaim, lalu tambahkan klaim ke pengumpulan klaim input. Klaim yang Anda tambahkan ke profil teknis AppInsights-Common muncul di semua peristiwa. Klaim yang Anda tambahkan ke profil teknis tertentu hanya muncul dalam peristiwa tersebut. Elemen klaim input berisi atribut berikut:

  • ClaimTypeReferenceId adalah referensi ke jenis klaim.
  • PartnerClaimType adalah nama properti yang muncul di Azure Insights. Gunakan sintaks {property:NAME}, di mana NAME adalah properti yang ditambahkan ke peristiwa.
  • DefaultValue adalah nilai yang telah ditentukan sebelumnya untuk direkam, seperti nama peristiwa. Jika klaim yang digunakan dalam perjalanan pengguna kosong, nilai default akan digunakan. Misalnya, identityProvider klaim ditetapkan oleh profil teknis federasi, seperti Facebook. Jika klaim kosong, itu menunjukkan pengguna masuk dengan akun lokal. Dengan demikian, nilai default diatur ke Lokal. Anda juga dapat merekam penyelesai klaim dengan nilai kontekstual, seperti ID aplikasi atau alamat IP pengguna.

Memanipulasi klaim

Anda dapat menggunakan transformasi klaim input untuk memodifikasi klaim input atau menghasilkan yang baru sebelum mengirimkannya ke Application Insights. Dalam contoh berikut, profil teknis mencakup CheckIsAdmin transformasi klaim input.

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

Tambahkan peristiwa

Untuk menambahkan acara, buat profil teknis baru yang menyertakan AppInsights-Common profil teknis. Kemudian tambahkan profil teknis baru sebagai langkah orkestrasi untuk perjalanan pengguna. Gunakan elemen Prakondisi untuk memicu peristiwa saat Anda siap. Misalnya, laporkan peristiwa hanya saat pengguna menjalankan autentikasi multifaktor.

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

Penting

Saat Anda menambahkan acara ke perjalanan pengguna, ingatlah untuk menomori ulang langkah orkestrasi secara berurutan.

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

Aktifkan mode pengembang

Saat menggunakan Application Insights untuk menentukan peristiwa, Anda dapat menunjukkan apakah mode pengembang diaktifkan. Mode pengembang mengontrol bagaimana peristiwa disangga. Dalam lingkungan pengembangan dengan volume peristiwa minimal, mengaktifkan mode pengembang menghasilkan peristiwa yang segera dikirim ke Application Insights Nilai defaultnya adalah false. Jangan aktifkan mode pengembang di lingkungan produksi.

Untuk mengaktifkan mode pengembang, ubah DeveloperMode metadata ke truedalam AppInsights-Common profil teknis:

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

Nonaktifkan telemetri

Untuk menonaktifkan log Application Insights, ubah DisableTelemetry metadata menjadi true dalam AppInsights-Common profil teknis:

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

Langkah berikutnya

Pelajari cara membuat dasbor KPI kustom menggunakan Azure Application Insights.