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
- Selesaikan langkah-langkah dalam Memulai dengan kebijakan kustom di Azure Active Directory B2C.
- Jika Anda belum melakukannya, daftarkan aplikasi web.
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.
- Masuk ke portal Azure.
- 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.
- PilihBuat sumber daya di sudut kiri atas portal Azure, lalu cari dan pilih Application Insights.
- Pilih Buat.
- Untuk Nama,masukkan nama untuk sumber daya.
- Untuk Jenis Aplikasi, pilih aplikasi web ASP.NET.
- Untuk Grup Sumber Daya, pilih grup yang sudah ada atau masukkan nama untuk grup baru.
- Pilih Buat.
- Buka sumber daya Application Insights baru, perluas Essentials,dan salin kunci instrumentasi.
Tentukan klaim
Klaim menyediakan penyimpanan data sementara selama eksekusi kebijakan Azure AD B2C. Anda menyatakan klaim Anda dalam elemen ClaimsSchema.
Buka file ekstensi kebijakan Anda. File mungkin terlihat mirip dengan
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
.Cari elemen BuildingBlocks. Jika Anda tidak melihat elemennya, tambahkan elemen tersebut.
Temukan elemen ClaimsSchema. Jika Anda tidak melihat elemennya, tambahkan elemen tersebut.
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-Common
profil 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.
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>
Sebelum
SendClaims
langkah orkestrasi, tambahkan langkah baru yang memanggilAppInsights-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>
Setelah
SendClaims
langkah orkestrasi, panggilAppInsights-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.
- Buka sumber daya Application Insights di penyewa Microsoft Entra Anda.
- Pilih Penggunaan, lalu pilih Peristiwa.
- Atur Selama ke Jam Terakhir danOleh ke 3 menit. Anda mungkin perlu menyegarkan jendela untuk melihat hasilnya.
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 manaNAME
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 true
dalam 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.