Tutorial: Memanggil Microsoft Graph API dari aplikasi Universal Windows Platform (UWP)
Dalam tutorial ini, Anda membangun aplikasi Universal Windows Platform (UWP) asli yang memasukkan pengguna dan mendapatkan token akses untuk memanggil Microsoft Graph API.
Di akhir panduan ini, aplikasi Anda akan memanggil API yang dilindungi dengan menggunakan akun pribadi. Contohnya adalah outlook.com, live.com, dan lain-lain. Aplikasi Anda juga memanggil akun kerja dan sekolah dari perusahaan atau organisasi mana pun yang memiliki ID Microsoft Entra.
Dalam tutorial ini:
- Membuat proyek Universal Windows Platform (UWP) di Visual Studio
- Mendaftarkan aplikasi di portal Microsoft Azure
- Menambahkan kode untuk mendukung upaya masuk dan keluar pengguna
- Menambahkan kode untuk memanggil Microsoft Graph API
- Menguji aplikasi
Prasyarat
- Visual Studio 2019 dengan beban kerja pengembangan Universal Windows Platform terinstal
Cara kerja panduan ini
Panduan ini membuat contoh aplikasi UWP yang mengkueri Microsoft Graph API. Untuk skenario ini, token ditambahkan ke permintaan HTTP dengan menggunakan header Otorisasi. Pustaka Autentikasi Microsoft menangani akuisisi dan perpanjangan token.
MSAL.NET versi 4.61.0 ke atas tidak memberikan dukungan untuk Platform Windows Universal (UWP), Xamarin Android, dan Xamarin iOS. Sebaiknya migrasikan aplikasi UWP Anda ke kerangka kerja modern seperti WINUI. Baca selengkapnya tentang penghentian dalam Mengumumkan Penghentian MSAL.NET mendatang untuk Xamarin dan UWP.
Paket NuGet
Panduan ini menggunakan paket NuGet berikut:
Pustaka | Deskripsi |
---|---|
Microsoft.Identity.Client | Pustaka Autentikasi Microsoft |
Microsoft.Graph | Pustaka Klien Microsoft Graph |
Menyiapkan proyek Anda
Bagian ini menyediakan petunjuk langkah demi langkah untuk mengintegrasikan aplikasi Windows Desktop .NET (XAML) beserta rincian masuk dengan Microsoft. Kemudian, aplikasi dapat meminta API web yang memerlukan token, seperti Microsoft Graph API.
Panduan ini membuat aplikasi yang menampilkan tombol yang meminta Microsoft Graph API dan tombol untuk keluar. Panduan ini juga menampilkan kotak teks yang berisi hasil panggilan.
Tip
Untuk melihat versi lengkap proyek yang dibuat dalam tutorial ini, Anda dapat mengunduhnya dari GitHub.
Membuat aplikasi
Buka Visual Studio, lalu pilih Buat proyek baru.
Di Buat proyek baru, pilih Aplikasi Kosong (Windows Universal) untuk C# dan pilih Berikutnya.
Di Konfigurasikan proyek baru Anda, beri nama aplikasi, lalu pilih Buat.
Jika diminta, di New Universal Windows Platform Project, pilih versi apa pun untuk versi Target dan Minimum, lalu pilih OK.
Menambahkan Pustaka Autentikasi Microsoft ke proyek Anda
Dalam Visual Studio, pilih Alat>NuGet Package Manager>Package Manager Console.
Salin dan tempel perintah berikut di jendela Konsol Manajer Paket:
Install-Package Microsoft.Identity.Client Install-Package Microsoft.Graph
Catatan
Perintah pertama menginstal Pustaka Autentikasi Microsoft (MSAL.NET). MSAL.NET memperoleh, menyimpan dalam cache, dan me-refresh token pengguna yang mengakses API yang dilindungi oleh platform identitas Microsoft. Perintah kedua menginstal Pustaka Klien Microsoft Graph .NET untuk mengautentikasi permintaan ke Microsoft Graph dan melakukan panggilan ke layanan.
Membuat antarmuka pengguna aplikasi Anda
Visual Studio membuat MainPage.xaml sebagai bagian dari templat proyek Anda. Buka file ini, lalu ganti simpul Kisi aplikasi Anda dengan kode berikut:
<Grid>
<StackPanel Background="Azure">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="CallGraphButton" Content="Call Microsoft Graph API" HorizontalAlignment="Right" Padding="5" Click="CallGraphButton_Click" Margin="5" FontFamily="Segoe Ui"/>
<Button x:Name="SignOutButton" Content="Sign-Out" HorizontalAlignment="Right" Padding="5" Click="SignOutButton_Click" Margin="5" Visibility="Collapsed" FontFamily="Segoe Ui"/>
</StackPanel>
<TextBlock Text="API Call Results" Margin="2,0,0,-5" FontFamily="Segoe Ui" />
<TextBox x:Name="ResultText" TextWrapping="Wrap" MinHeight="120" Margin="5" FontFamily="Segoe Ui"/>
<TextBlock Text="Token Info" Margin="2,0,0,-5" FontFamily="Segoe Ui" />
<TextBox x:Name="TokenInfoText" TextWrapping="Wrap" MinHeight="70" Margin="5" FontFamily="Segoe Ui"/>
</StackPanel>
</Grid>
Menggunakan Pustaka Autentikasi Microsoft untuk mendapatkan token untuk Microsoft Graph API
Bagian ini menampilkan cara menggunakan Pustaka Autentikasi Microsoft untuk mendapatkan token Microsoft Graph API. Lakukan perubahan pada file MainPage.xaml.cs.
Di MainPage.xaml.cs, tambahkan referensi berikut:
using Microsoft.Identity.Client; using Microsoft.Graph; using Microsoft.Graph.Models; using System.Diagnostics; using System.Threading.Tasks; using System.Net.Http.Headers;
Ganti kelas
MainPage
Anda dengan kode berikut:public sealed partial class MainPage : Page { //Set the scope for API call to user.read private string[] scopes = new string[] { "user.read" }; // Below are the clientId (Application Id) of your app registration and the tenant information. // You have to replace: // - the content of ClientID with the Application Id for your app registration private const string ClientId = "[Application Id pasted from the application registration portal]"; private const string Tenant = "common"; // Alternatively "[Enter your tenant, as obtained from the Azure portal, e.g. kko365.onmicrosoft.com]" private const string Authority = "https://login.microsoftonline.com/" + Tenant; // The MSAL Public client app private static IPublicClientApplication PublicClientApp; private static string MSGraphURL = "https://graph.microsoft.com/v1.0/"; private static AuthenticationResult authResult; public MainPage() { this.InitializeComponent(); } /// <summary> /// Call AcquireTokenAsync - to acquire a token requiring user to sign in /// </summary> private async void CallGraphButton_Click(object sender, RoutedEventArgs e) { try { // Sign in user using MSAL and obtain an access token for Microsoft Graph GraphServiceClient graphClient = await SignInAndInitializeGraphServiceClient(scopes); // Call the /me endpoint of Graph User graphUser = await graphClient.Me.GetAsync(); // Go back to the UI thread to make changes to the UI await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { ResultText.Text = "Display Name: " + graphUser.DisplayName + "\nBusiness Phone: " + graphUser.BusinessPhones.FirstOrDefault() + "\nGiven Name: " + graphUser.GivenName + "\nid: " + graphUser.Id + "\nUser Principal Name: " + graphUser.UserPrincipalName; DisplayBasicTokenInfo(authResult); this.SignOutButton.Visibility = Visibility.Visible; }); } catch (MsalException msalEx) { await DisplayMessageAsync($"Error Acquiring Token:{System.Environment.NewLine}{msalEx}"); } catch (Exception ex) { await DisplayMessageAsync($"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}"); return; } } /// <summary> /// Signs in the user and obtains an access token for Microsoft Graph /// </summary> /// <param name="scopes"></param> /// <returns> Access Token</returns> private static async Task<string> SignInUserAndGetTokenUsingMSAL(string[] scopes) { // Initialize the MSAL library by building a public client application PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority(Authority) .WithUseCorporateNetwork(false) .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") .WithLogging((level, message, containsPii) => { Debug.WriteLine($"MSAL: {level} {message} "); }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true) .Build(); // It's good practice to not do work on the UI thread, so use ConfigureAwait(false) whenever possible. IEnumerable<IAccount> accounts = await PublicClientApp.GetAccountsAsync().ConfigureAwait(false); IAccount firstAccount = accounts.FirstOrDefault(); try { authResult = await PublicClientApp.AcquireTokenSilent(scopes, firstAccount) .ExecuteAsync(); } catch (MsalUiRequiredException ex) { // A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token Debug.WriteLine($"MsalUiRequiredException: {ex.Message}"); authResult = await PublicClientApp.AcquireTokenInteractive(scopes) .ExecuteAsync() .ConfigureAwait(false); } return authResult.AccessToken; } }
Mendapatkan token pengguna secara interaktif
Metode AcquireTokenInteractive
ini menghasilkan jendela yang meminta pengguna untuk masuk. Aplikasi biasanya mengharuskan pengguna untuk masuk secara interaktif saat pertama kali mengakses sumber daya yang dilindungi. Pengguna mungkin juga perlu masuk ketika operasi senyap untuk mendapatkan token gagal. Contohnya adalah ketika kata sandi pengguna telah kedaluwarsa.
Mendapatkan token pengguna secara diam-diam
Metode AcquireTokenSilent
ini menangani akuisisi dan perpanjangan token tanpa interaksi pengguna. Setelah AcquireTokenInteractive
berjalan untuk pertama kalinya dan meminta info masuk kepada pengguna, gunakan metode AcquireTokenSilent
untuk meminta token untuk panggilan nanti. Metode tersebut memperoleh token secara diam-diam. Pustaka Autentikasi Microsoft menangani cache dan perpanjangan token.
Akhirnya, metode AcquireTokenSilent
gagal. Alasan kegagalan termasuk pengguna yang keluar atau mengubah kata sandi mereka di perangkat lain. Ketika mendeteksi bahwa masalah memerlukan tindakan interaktif, Pustaka Autentikasi Microsoft memerlukan pengecualian MsalUiRequiredException
. Aplikasi Anda dapat menangani pengecualian ini dengan dua cara:
Aplikasi Anda akan segera memanggil
AcquireTokenInteractive
. Panggilan ini mengakibatkan permintaan kepada pengguna untuk masuk. Biasanya, gunakan pendekatan ini untuk aplikasi online tempat tidak ada konten offline yang tersedia untuk pengguna. Sampel yang dihasilkan oleh penyiapan terpandu ini akan mengikuti pola. Anda melihatnya berfungsi saat pertama kali Anda menjalankan sampel.Karena tidak ada pengguna yang menggunakan aplikasi,
accounts.FirstOrDefault()
berisi nilai null, dan menampilkan pengecualianMsalUiRequiredException
.Kode dalam sampel kemudian menangani pengecualian dengan memanggil
AcquireTokenInteractive
. Panggilan ini mengakibatkan permintaan kepada pengguna untuk masuk.Aplikasi Anda menyajikan indikasi visual kepada pengguna bahwa mereka perlu masuk. Kemudian, pengguna dapat memilih waktu yang tepat untuk masuk. Aplikasi dapat mencoba lagi
AcquireTokenSilent
nanti. Gunakan pendekatan ini ketika pengguna dapat menggunakan fungsionalitas aplikasi lain tanpa gangguan. Contohnya adalah ketika konten offline tersedia dalam aplikasi. Dalam hal ini, pengguna dapat memutuskan kapan mereka ingin masuk. Aplikasi dapat mencoba kembaliAcquireTokenSilent
setelah jaringan untuk sementara waktu tidak tersedia.
Buat Microsoft Graph Service Client dengan mendapatkan token dari metode SignInUserAndGetTokenUsingMSAL
Dalam proyek, buat file baru bernama TokenProvider.cs: klik kanan pada proyek, pilih Tambahkan>Halaman Kosong Item>Baru.
Tambahkan ke file yang baru dibuat dengan kode berikut:
using Microsoft.Kiota.Abstractions.Authentication;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace UWP_app_MSGraph {
public class TokenProvider : IAccessTokenProvider {
private Func<string[], Task<string>> getTokenDelegate;
private string[] scopes;
public TokenProvider(Func<string[], Task<string>> getTokenDelegate, string[] scopes) {
this.getTokenDelegate = getTokenDelegate;
this.scopes = scopes;
}
public Task<string> GetAuthorizationTokenAsync(Uri uri, Dictionary<string, object> additionalAuthenticationContext = default,
CancellationToken cancellationToken = default) {
return getTokenDelegate(scopes);
}
public AllowedHostsValidator AllowedHostsValidator { get; }
}
}
Tip
Setelah menempelkan kode, pastikan bahwa namespace dalam file TokenProvider.cs cocok dengan namespace proyek Anda. Ini akan memungkinkan Anda untuk lebih mudah mereferensikan TokenProvider
kelas dalam proyek Anda.
Kelas TokenProvider
menentukan penyedia token akses kustom yang menjalankan metode delegasi yang ditentukan untuk mendapatkan dan mengembalikan token akses.
Tambahkan metode baru berikut ke MainPage.xaml.cs:
/// <summary>
/// Sign in user using MSAL and obtain a token for Microsoft Graph
/// </summary>
/// <returns>GraphServiceClient</returns>
private async static Task<GraphServiceClient> SignInAndInitializeGraphServiceClient(string[] scopes)
{
var tokenProvider = new TokenProvider(SignInUserAndGetTokenUsingMSAL, scopes);
var authProvider = new BaseBearerTokenAuthenticationProvider(tokenProvider);
var graphClient = new GraphServiceClient(authProvider, MSGraphURL);
return await Task.FromResult(graphClient);
}
Dalam metode ini, Anda menggunakan penyedia TokenProvider
token akses kustom untuk menyambungkan SignInUserAndGetTokenUsingMSAL
metode ke Microsoft Graph .NET SDK dan membuat klien terautentikasi.
Untuk menggunakan BaseBearerTokenAuthenticationProvider
, dalam file MainPage.xaml.cs , tambahkan referensi berikut:
using Microsoft.Kiota.Abstractions.Authentication;
Informasi selengkapnya tentang melakukan panggilan REST terhadap API yang dilindungi
Dalam aplikasi contoh ini, metode GetGraphServiceClient
akan membuat GraphServiceClient
dengan menggunakan token akses. Kemudian, GraphServiceClient
digunakan untuk mendapatkan informasi profil pengguna dari titik akhir saya.
Menambahkan metode mengeluarkan pengguna
Untuk mengeluarkan pengguna, tambahkan metode berikut ke MainPage.xaml.cs:
/// <summary>
/// Sign out the current user
/// </summary>
private async void SignOutButton_Click(object sender, RoutedEventArgs e)
{
IEnumerable<IAccount> accounts = await PublicClientApp.GetAccountsAsync().ConfigureAwait(false);
IAccount firstAccount = accounts.FirstOrDefault();
try
{
await PublicClientApp.RemoveAsync(firstAccount).ConfigureAwait(false);
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
ResultText.Text = "User has signed out";
this.CallGraphButton.Visibility = Visibility.Visible;
this.SignOutButton.Visibility = Visibility.Collapsed;
});
}
catch (MsalException ex)
{
ResultText.Text = $"Error signing out user: {ex.Message}";
}
}
MSAL.NET menggunakan metode asinkron untuk memperoleh token atau memanipulasi akun. Dengan demikian, mendukung tindakan antarmuka pengguna di utas antarmuka pengguna. Ini adalah alasan untuk panggilan Dispatcher.RunAsync
dan tindakan pencegahan untuk memanggil ConfigureAwait(false)
.
Informasi selengkapnya tentang cara keluar
Metode SignOutButton_Click
ini akan menghapus pengguna dari cache pengguna Pustaka Autentikasi Microsoft. Metode ini secara efektif memberi tahu Pustaka Autentikasi Microsoft untuk melupakan pengguna saat ini. Permintaan selanjutnya untuk memperoleh token hanya berhasil jika bersifat interaktif.
Aplikasi dalam sampel ini mendukung satu pengguna. Pustaka Autentikasi Microsoft mendukung skenario di mana pengguna dapat masuk di lebih dari satu akun. Contohnya adalah aplikasi email di mana pengguna memiliki beberapa akun.
Menampilkan informasi token dasar
Tambahkan metode berikut ke MainPage.xaml.cs untuk menampilkan informasi dasar tentang token:
/// <summary>
/// Display basic information contained in the token. Needs to be called from the UI thread.
/// </summary>
private void DisplayBasicTokenInfo(AuthenticationResult authResult)
{
TokenInfoText.Text = "";
if (authResult != null)
{
TokenInfoText.Text += $"User Name: {authResult.Account.Username}" + Environment.NewLine;
TokenInfoText.Text += $"Token Expires: {authResult.ExpiresOn.ToLocalTime()}" + Environment.NewLine;
}
}
Informasi selengkapnya
Token ID yang diperoleh dengan menggunakan OpenID Connect juga berisi sebagian kecil informasi yang berkaitan dengan pengguna. DisplayBasicTokenInfo
menampilkan informasi dasar yang terkandung dalam token. Informasi ini mencakup nama tampilan dan ID pengguna. Ini juga mencakup kedaluwarsa token dan string yang mewakili token akses itu sendiri. Jika memilih tombol Panggil Microsoft Graph API beberapa kali, Anda akan melihat bahwa token yang sama digunakan kembali untuk permintaan nanti. Anda juga dapat melihat kedaluwarsa diperpanjang saat Pustaka Autentikasi Microsoft memutuskan waktunya untuk memperpanjang token.
Menampilkan pesan
Tambahkan metode baru berikut ke MainPage.xaml.cs:
/// <summary>
/// Displays a message in the ResultText. Can be called from any thread.
/// </summary>
private async Task DisplayMessageAsync(string message)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
ResultText.Text = message;
});
}
Mendaftarkan aplikasi Anda
Tip
Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.
Sekarang, daftarkan aplikasi Anda:
- Masuk ke pusat admin Microsoft Entra setidaknya sebagai Pengembang Aplikasi.
- Jika Anda memiliki akses ke beberapa penyewa, gunakan ikon Pengaturan di menu atas untuk beralih ke penyewa tempat Anda ingin mendaftarkan aplikasi dari menu Direktori + langganan.
- Telusuri Aplikasi >Identitas>Pendaftaran aplikasi.
- Pilih Pendaftaran baru.
- Masukkan Nama untuk aplikasi Anda, contohnya
UWP-App-calling-MSGraph
. Pengguna aplikasi mungkin melihat nama ini, dan Anda dapat mengubahnya nanti. - Di bawah Jenis akun yang didukung, pilih Akun di direktori organisasi apa pun (Direktori Microsoft Entra apa pun - Multipenyewa) dan akun Microsoft pribadi (misalnya Skype, Xbox).
- Pilih Daftarkan.
- Pada halaman ringkasan, temukan dan salin nilai ID Aplikasi (klien). Kembali ke Visual Studio, buka MainPage.xaml.cs, dan ganti nilai
ClientId
dengan nilai ini.
Mengonfigurasi autentikasi untuk aplikasi Anda:
- Di pusat admin Microsoft Entra, pilih Autentikasi>Tambahkan platform, lalu pilih Aplikasi seluler dan desktop.
- Di bagian URI Pengalihan, masukkan
https://login.microsoftonline.com/common/oauth2/nativeclient
. - Pilih Konfigurasikan.
Mengonfigurasi izin API untuk aplikasi Anda:
- Pilih Izin API>Tambahkan izin.
- Pilih Microsoft Graph.
- Pilih Izin yang didelegasikan, cari User.Read, dan verifikasi bahwa User.Read dipilih.
- Jika Anda melakukan perubahan, pilih Tambahkan izin untuk menyimpannya.
Aktifkan autentikasi terintegrasi pada domain federasi (opsional)
Untuk mengaktifkan autentikasi Windows terintegrasi saat digunakan dengan domain Microsoft Entra federasi, manifes aplikasi harus mengaktifkan kemampuan tambahan. Kembali ke aplikasi Anda di Visual Studio.
Buka Package.appxmanifest.
Pilih Kemampuan, dan aktifkan pengaturan berikut:
- Autentikasi Perusahaan
- Jaringan Privat (Klien & Server)
- Sertifikat Pengguna Bersama
Penting
NTLM Terintegrasi tidak dikonfigurasi secara default untuk sampel ini. Aplikasi yang meminta kemampuan Enterprise Authentication
atau Shared User Certificates
memerlukan tingkat verifikasi yang lebih tinggi oleh Windows Store. Selain itu, tidak semua pengembang ingin melakukan verifikasi tingkat yang lebih tinggi. Aktifkan pengaturan ini hanya jika Anda memerlukan autentikasi Windows terintegrasi dengan domain Microsoft Entra gabungan.
Pendekatan alternatif untuk menggunakan WithDefaultRedirectURI()
Dalam sampel saat ini, metode WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
ini akan digunakan. Untuk menggunakan WithDefaultRedirectURI()
, selesaikan langkah-langkah ini:
Di MainPage.XAML.cs, ganti
WithRedirectUri
denganWithDefaultRedirectUri
:Kode saat ini
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority(Authority) .WithUseCorporateNetwork(false) .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") .WithLogging((level, message, containsPii) => { Debug.WriteLine($"MSAL: {level} {message} "); }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true) .Build();
Kode yang diperbarui
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority("https://login.microsoftonline.com/common") .WithUseCorporateNetwork(false) .WithDefaultRedirectUri() .WithLogging((level, message, containsPii) => { Debug.WriteLine($"MSAL: {level} {message} "); }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true) .Build();
Temukan URI panggilan balik untuk aplikasi Anda dengan menambahkan bidang
redirectURI
di MainPage.xaml.cs dan atur titik henti di dalamnya:public sealed partial class MainPage : Page { ... string redirectURI = Windows.Security.Authentication.Web.WebAuthenticationBroker .GetCurrentApplicationCallbackUri().ToString(); public MainPage() { ... } ... }
Jalankan aplikasi, lalu salin nilai
redirectUri
saat titik henti tercapai. Nilai harus terlihat mirip dengan nilai berikut:ms-app://s-1-15-2-1352796503-54529114-405753024-3540103335-3203256200-511895534-1429095407/
Anda kemudian dapat menghapus baris kode karena hanya diperlukan sekali, untuk mengambil nilai tersebut.
Di pusat admin Microsoft Entra, tambahkan nilai yang dikembalikan di RedirectUri di panel Autentikasi .
Menguji kode
Untuk menguji aplikasi, pilih kunci F5 guna menjalankan proyek di Visual Studio. Jendela utama akan muncul:
Saat Anda siap untuk menguji, pilih Panggil Microsoft Graph API. Kemudian gunakan akun organisasi Microsoft Entra atau akun Microsoft, seperti live.com atau outlook.com, untuk masuk. Pertama kali pengguna menjalankan pengujian ini, aplikasi menampilkan jendela yang meminta pengguna untuk masuk.
Persetujuan
Saat pertama masuk ke aplikasi Anda, layar persetujuan tampak mirip dengan gambar berikut. Pilih Ya untuk secara eksplisit memberi persetujuan untuk mengakses:
Hasil yang diharapkan
Anda melihat informasi profil pengguna yang dikembalikan oleh panggilan Microsoft Graph API di layar Hasil Panggilan API:
Anda juga melihat informasi dasar tentang token yang diperoleh melalui AcquireTokenInteractive
atau AcquireTokenSilent
dalam kotak Info Token:
Properti | Format | Deskripsi |
---|---|---|
Username |
user@domain.com |
Nama pengguna yang mengidentifikasi pengguna. |
Token Expires |
DateTime |
Waktu ketika token kedaluwarsa. Pustaka Autentikasi Microsoft memperpanjang kedaluwarsa dengan memperpanjang token jika diperlukan. |
Informasi selengkapnya tentang cakupan dan izin yang didelegasikan
Microsoft Graph API memerlukan cakupan user.read
untuk membaca profil pengguna. Cakupan ini ditambahkan secara default di setiap aplikasi yang terdaftar di Portal Pendaftaran Aplikasi. API lain untuk Microsoft Graph dan API kustom untuk server back-end Anda mungkin memerlukan cakupan tambahan. Misalnya, Microsoft Graph API memerlukan cakupan Calendars.Read
untuk mencantumkan kalender pengguna.
Untuk mengakses kalender pengguna dalam konteks aplikasi, tambahkan izin yang didelegasikan Calendars.Read
ke informasi pendaftaran aplikasi. Kemudian, tambahkan cakupan Calendars.Read
ke panggilan acquireTokenSilent
.
Pengguna mungkin dimintai persetujuan tambahan saat Anda meningkatkan jumlah cakupan.
Masalah umum
Masalah 1
Anda menerima salah satu pesan kesalahan berikut saat masuk ke aplikasi Anda di domain Microsoft Entra federasi:
- "Tidak ada sertifikat klien yang valid yang ditemukan dalam permintaan".
- "Tidak ada sertifikat yang valid yang ditemukan di penyimpanan sertifikat pengguna".
- "Coba lagi pilih metode autentikasi yang berbeda".
Penyebab: Kemampuan perusahaan dan sertifikat tidak diaktifkan.
Solusi: Ikuti langkah-langkah dalam Mengaktifkan autentikasi terintegrasi pada domain federasi (opsional).
Masalah 2
Anda mengaktifkan autentikasi terintegrasi pada domain federasi dan mencoba menggunakan Windows Hello pada komputer Windows 10 untuk masuk ke lingkungan dengan autentikasi multifaktor dikonfigurasi. Daftar sertifikat akan muncul. Jika memilih untuk menggunakan PIN Anda, jendela PIN tidak pernah muncul.
Penyebab: Masalah ini adalah batasan yang diketahui dari broker autentikasi web dalam aplikasi UWP yang berjalan di desktop Windows 10. Ini berfungsi dengan baik di Windows 10 Mobile.
Solusi Sementara: Pilih Masuk dengan opsi lain. Kemudian, pilih Masuk dengan nama pengguna dan kata sandi. Pilih Berikan kata sandi Anda. Kemudian, lanjutkan ke proses autentikasi telepon.
Bantuan dan dukungan
Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.
Langkah berikutnya
Pelajari selengkapnya tentang cara menggunakan Pustaka Autentikasi Microsoft (MSAL) untuk otorisasi dan autentikasi dalam aplikasi .NET: