Bagikan melalui


Mengautentikasi aplikasi Java ke layanan Azure selama pengembangan lokal dengan menggunakan autentikasi broker

Autentikasi broker mengumpulkan kredensial pengguna menggunakan broker autentikasi sistem untuk mengautentikasi aplikasi. Broker autentikasi sistem adalah aplikasi yang berjalan di komputer pengguna yang mengelola jabat tangan autentikasi dan pemeliharaan token untuk semua akun yang terhubung.

Autentikasi broker menawarkan manfaat berikut:

  • Enables Single Sign-On (SSO): Memungkinkan aplikasi menyederhanakan cara pengguna mengautentikasi dengan Microsoft Entra ID dan melindungi token refresh Microsoft Entra ID dari eksfiltrasi dan penyalahgunaan.
  • Keamanan yang ditingkatkan: Banyak peningkatan keamanan dikirimkan dengan broker, tanpa perlu memperbarui logika aplikasi.
  • Dukungan fitur yang ditingkatkan: Dengan bantuan broker, pengembang dapat mengakses OS yang kaya dan kemampuan layanan.
  • Integrasi sistem: Aplikasi yang menggunakan broker plug-and-play dengan pemilih akun bawaan, memungkinkan pengguna untuk dengan cepat memilih akun yang ada alih-alih memasukkan kembali kredensial yang sama berulang-ulang.
  • Perlindungan Token: Memastikan bahwa token refresh terikat perangkat dan memungkinkan aplikasi memperoleh token akses terikat perangkat. Lihat Perlindungan Token.

Windows menyediakan broker autentikasi yang disebut Web Account Manager (WAM). WAM memungkinkan penyedia identitas seperti Microsoft Entra ID untuk secara asli terhubung ke OS dan menyediakan layanan masuk yang aman ke aplikasi. Autentikasi broker memungkinkan aplikasi untuk semua operasi yang diizinkan oleh info masuk masuk interaktif.

Akun Microsoft pribadi dan akun kantor atau sekolah didukung. Pada versi Windows yang didukung, UI berbasis browser default diganti dengan pengalaman autentikasi yang lebih lancar, mirip dengan aplikasi Windows bawaan.

Mengonfigurasi aplikasi untuk autentikasi broker

Untuk mengaktifkan autentikasi broker di aplikasi Anda, ikuti langkah-langkah berikut:

  1. Di portal Azure, navigasikan ke Microsoft Entra ID dan pilih App registrations di menu sebelah kiri.

  2. Pilih pendaftaran untuk aplikasi Anda, lalu pilih Autentikasi.

  3. Tambahkan URI pengalihan yang sesuai ke pendaftaran aplikasi Anda melalui konfigurasi platform:

    1. Di bawah Konfigurasi platform, pilih + Tambahkan platform.

    2. Di bawah Konfigurasikan platform, pilih petak peta untuk jenis aplikasi (platform) Anda untuk mengonfigurasi pengaturannya, seperti aplikasi seluler dan desktop.

    3. Di URI pengalihan kustom, masukkan URI pengalihan berikut:

      ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}

      Ganti {your_client_id} dengan ID Aplikasi (klien) dari panel Gambaran Umum pendaftaran aplikasi.

    4. Pilih Konfigurasikan.

    Untuk mempelajari selengkapnya, lihat Menambahkan URI pengalihan ke pendaftaran aplikasi.

  4. Kembali ke panel Autentikasi , di bawah Pengaturan tingkat lanjut, pilih Ya untuk Izinkan alur klien publik.

  5. Pilih Simpan untuk menerapkan perubahan.

  6. Untuk mengotorisasi aplikasi untuk sumber daya tertentu, navigasikan ke sumber daya yang dimaksud, pilih izin API, dan aktifkan Microsoft Graph dan sumber daya lain yang ingin Anda akses.

    Penting

    Anda juga harus menjadi admin penyewa untuk memberikan persetujuan ke aplikasi Anda saat masuk untuk pertama kalinya.

Menetapkan peran

Agar kode aplikasi Anda berhasil dijalankan dengan autentikasi broker, berikan izin akun pengguna Anda menggunakan Azure kontrol akses berbasis peran (RBAC). Tetapkan peran yang sesuai ke akun pengguna Anda untuk layanan Azure yang relevan. Contohnya:

  • Azure Blob Storage: Tetapkan peran Storage Account Data Contributor.
  • Azure Key Vault: Tetapkan peran Key Vault Secrets Officer.

Jika aplikasi ditentukan, aplikasi harus memiliki izin API yang ditetapkan untuk user_impersonation Access Azure Storage (langkah 6 di bagian sebelumnya). Izin API ini memungkinkan aplikasi untuk mengakses penyimpanan Azure atas nama pengguna yang masuk setelah persetujuan diberikan selama masuk.

Menerapkan kode

Pustaka Azure Identity mendukung autentikasi broker dengan menggunakan InteractiveBrowserCredential. Pustaka azure-identity-broker menyediakan InteractiveBrowserBrokerCredentialBuilder, yang menciptakan InteractiveBrowserCredential kemampuan menggunakan broker autentikasi sistem. Misalnya, untuk menggunakan autentikasi broker di aplikasi konsol Java untuk mengautentikasi ke Azure Key Vault dengan SecretClient, ikuti langkah-langkah berikut:

  1. azure-identity-broker Tambahkan dependensi ke file Andapom.xml:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity-broker</artifactId>
    </dependency>
    
  2. Dapatkan referensi ke jendela induk di atas dialog pemilih akun akan muncul. Misalnya, lihat Mendapatkan handel jendela.

  3. Buat instans menggunakan InteractiveBrowserCredentialInteractiveBrowserBrokerCredentialBuilder:

    import com.azure.identity.InteractiveBrowserCredential;
    import com.azure.identity.broker.InteractiveBrowserBrokerCredentialBuilder;
    import com.azure.security.keyvault.secrets.SecretClient;
    import com.azure.security.keyvault.secrets.SecretClientBuilder;
    import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
    
    long windowHandle = getWindowHandle(); // See examples below
    
    InteractiveBrowserCredential credential = new InteractiveBrowserBrokerCredentialBuilder()
        .setWindowHandle(windowHandle)
        .useDefaultBrokerAccount()
        .build();
    
    SecretClient client = new SecretClientBuilder()
        .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
        .credential(credential)
        .buildClient();
    
    KeyVaultSecret secret = client.getSecret("MySecret");
    System.out.println("Retrieved secret: " + secret.getName());
    

Dalam contoh sebelumnya, useDefaultBrokerAccount memilih alur autentikasi diam dan diantarai dengan akun sistem default. Dengan cara ini, pengguna tidak perlu berulang kali memilih akun yang sama. Jika diam, autentikasi broker gagal, InteractiveBrowserCredential kembali ke autentikasi interaktif dan broker.

Cuplikan layar berikut menunjukkan pengalaman autentikasi interaktif dan broker alternatif:

Screenshot pengalaman masuk Windows saat menggunakan instans InteractiveBrowserCredential berkemampuan broker untuk mengautentikasi user.

Mendapatkan handel jendela

Saat Mengautentikasi secara interaktif dengan menggunakan InteractiveBrowserCredential, Anda memerlukan handel jendela induk untuk memastikan dialog autentikasi muncul dengan benar di atas jendela yang mengirim permintaan.

Aplikasi JavaFX

Untuk aplikasi JavaFX, gunakan JNA (Java Native Access) untuk mendapatkan handel jendela:

import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;

public long getWindowHandle(Stage stage) {
    WinDef.HWND hwnd = User32.INSTANCE.FindWindow(null, stage.getTitle());
    return Pointer.nativeValue(hwnd.getPointer());
}

Aplikasi konsol

Untuk aplikasi konsol di Windows, gunakan JNA untuk mendapatkan handel jendela konsol:

import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.WinDef;

WinDef.HWND hwnd = Kernel32.INSTANCE.GetConsoleWindow();
long windowHandle = Pointer.nativeValue(hwnd.getPointer());