Bagikan melalui


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.

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 cakupan customer.read dan customer.write
  • https://mytenant.onmicrosoft.com/vendorapi dengan cakupan vendor.read dan vendor.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.