Aplikasi desktop yang memanggil API web: Pindah ke produksi
Dalam artikel ini, Anda mempelajari cara memindah aplikasi desktop yang memanggil API web ke produksi.
Menangani kesalahan dalam aplikasi desktop
Dalam alur yang berbeda, Anda telah mempelajari cara menangani kesalahan untuk alur senyap, seperti yang ditunjukkan pada cuplikan kode. Anda juga telah melihat bahwa ada kasus di mana interaksi diperlukan, seperti dalam persetujuan inkremental dan Akses Bersyarkat.
Mintalah persetujuan pengguna dimuka untuk beberapa sumber daya
Catatan
Mendapatkan persetujuan supaya beberapa sumber daya berfungsi untuk platform identitas Microsoft tetapi tidak untuk Azure Active Directory (Azure AD) B2C. Azure AD B2C hanya mendukung persetujuan admin, bukan persetujuan pengguna.
Anda tidak bisa mendapat token untuk beberapa sumber daya sekaligus dengan platform identitas Microsoft. Parameter scopes
hanya dapat berisi cakupan untuk satu sumber daya. Anda dapat memastikan bahwa pengguna melakukan prapersetujuan ke beberapa sumber daya menggunakan parameter extraScopesToConsent
.
Misalnya, Anda mungkin memiliki dua sumber daya yang masing-masing memiliki dua cakupan:
https://mytenant.onmicrosoft.com/customerapi
dengan cakupancustomer.read
dancustomer.write
https://mytenant.onmicrosoft.com/vendorapi
dengan cakupanvendor.read
danvendor.write
Dalam contoh ini, gunakan modifier .WithExtraScopesToConsent
yang memiliki parameter extraScopesToConsent
.
Contohnya:
Pada MSAL.NET
string[] scopesForCustomerApi = new string[]
{
"https://mytenant.onmicrosoft.com/customerapi/customer.read",
"https://mytenant.onmicrosoft.com/customerapi/customer.write"
};
string[] scopesForVendorApi = new string[]
{
"https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
"https://mytenant.onmicrosoft.com/vendorapi/vendor.write"
};
var accounts = await app.GetAccountsAsync();
var result = await app.AcquireTokenInteractive(scopesForCustomerApi)
.WithAccount(accounts.FirstOrDefault())
.WithExtraScopesToConsent(scopesForVendorApi)
.ExecuteAsync();
Pada MSAL untuk iOS dan macOS
Objective-C:
NSArray *scopesForCustomerApi = @[@"https://mytenant.onmicrosoft.com/customerapi/customer.read",
@"https://mytenant.onmicrosoft.com/customerapi/customer.write"];
NSArray *scopesForVendorApi = @[@"https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
@"https://mytenant.onmicrosoft.com/vendorapi/vendor.write"]
MSALInteractiveTokenParameters *interactiveParams = [[MSALInteractiveTokenParameters alloc] initWithScopes:scopesForCustomerApi webviewParameters:[MSALWebviewParameters new]];
interactiveParams.extraScopesToConsent = scopesForVendorApi;
[application acquireTokenWithParameters:interactiveParams completionBlock:^(MSALResult *result, NSError *error) { /* handle result */ }];
Swift:
let scopesForCustomerApi = ["https://mytenant.onmicrosoft.com/customerapi/customer.read",
"https://mytenant.onmicrosoft.com/customerapi/customer.write"]
let scopesForVendorApi = ["https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
"https://mytenant.onmicrosoft.com/vendorapi/vendor.write"]
let interactiveParameters = MSALInteractiveTokenParameters(scopes: scopesForCustomerApi, webviewParameters: MSALWebviewParameters())
interactiveParameters.extraScopesToConsent = scopesForVendorApi
application.acquireToken(with: interactiveParameters, completionBlock: { (result, error) in /* handle result */ })
Panggilan ini memberi Anda token akses untuk API web pertama.
Saat memanggil API web kedua, hubungi API AcquireTokenSilent
.
AcquireTokenSilent(scopesForVendorApi, accounts.FirstOrDefault()).ExecuteAsync();
Akun pribadi Microsoft memerlukan izin ulang setiap kali aplikasi berjalan
Untuk pengguna akun pribadi Microsoft, meminta ulang persetujuan pada setiap panggilan klien asli (desktop atau aplikasi seluler) untuk mengotorisasi adalah perilaku yang dimaksudkan. Identitas klien asli secara inheren tidak aman, yang bertentangan dengan identitas aplikasi klien rahasia. Aplikasi klien rahasia bertukar rahasia dengan platform identitas Microsoft untuk membuktikan identitas mereka. Platform identitas Microsoft memilih untuk mengurangi ketidakamanan ini untuk layanan konsumen dengan meminta persetujuan pengguna setiap kali aplikasi diizinkan.
Aktifkan pencatatan log
Untuk membantu dalam skenario pemecahan masalah kegagalan debug dan autentikasi, Microsoft Authentication Library menyediakan dukungan pengelogan bawaan. Pengelogan di setiap pustaka dibahas dalam artikel berikut:
Berikut adalah beberapa saran untuk pengumpulan data:
Pengguna mungkin meminta bantuan ketika mereka memiliki masalah. Praktik terbaik adalah menangkap dan menyimpan log untuk sementara. Sediakan lokasi tempat pengguna dapat mengunggah log. MSAL menyediakan ekstensi pengelogan untuk menangkap informasi rinci tentang autentikasi.
Jika telemetri tersedia, aktifkan melalui MSAL untuk mengumpulkan data tentang cara pengguna masuk ke aplikasi Anda.
Validasi integrasi Anda
Uji integrasi Anda dengan mengikuti daftar periksa integrasi platform identitas Microsoft.
Membangun untuk ketahanan
Pelajari cara meningkatkan ketahanan di aplikasi Anda. Untuk detailnya, lihat Meningkatkan ketahanan aplikasi autentikasi dan otorisasi yang Anda kembangkan
Langkah berikutnya
Untuk mencoba sampel tambahan, lihat Aplikasi klien publik desktop.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk