Mulai cepat: Memperoleh token dan memanggil Microsoft Graph dari aplikasi daemon Java

Dalam mulai cepat ini, Anda mengunduh dan menjalankan sampel kode yang menunjukkan cara aplikasi konsol Java bisa mendapatkan token akses menggunakan identitas aplikasi untuk memanggil Microsoft Graph API dan menampilkan daftar pengguna di direktori. Sampel kode juga menunjukkan bagaimana pekerjaan tanpa pengawasan atau layanan Windows dapat berjalan dengan identitas aplikasi, bukan identitas pengguna.

Diagram showing how the sample app generated by this quickstart works.

Prasyarat

Untuk menjalankan sampel ini, Anda perlu:

Mendaftar dan mengunduh aplikasi mulai cepat Anda

Tip

Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.

Langkah 1: Daftarkan aplikasi

Untuk mendaftarkan aplikasi Anda dan menambahkan informasi pendaftaran aplikasi ke solusi Anda secara manual, ikuti langkah-langkah ini:

  1. Masuk ke pusat admin Microsoft Entra setidaknya sebagai Pengembang Aplikasi.
  2. 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.
  3. Telusuri pendaftaran Aplikasi Aplikasi>Identitas>.
  4. Pilih Pendaftaran baru.
  5. Masukkan Nama untuk aplikasi Anda, contohnya Daemon-console. Pengguna aplikasi mungkin melihat nama ini, dan Anda dapat mengubahnya nanti.
  6. Pilih Daftarkan.
  7. Di bagian Kelola, pilih Sertifikat & rahasia.
  8. Di bagian Rahasia klien, pilih Rahasia klien baru, masukkan nama, lalu pilih Tambahkan. Catat nilai rahasia di lokasi aman untuk digunakan di langkah selanjutnya.
  9. Di bawah Kelola, pilih Izin API>Tambahkan izin. Pilih Microsoft Graph.
  10. Pilih Izin aplikasi.
  11. Di bagian simpul Pengguna, pilih User.Read.All, lalu pilih Tambahkan izin.

Langkah 2: Unduh proyek Java

Unduh proyek daemon Java

Langkah 3: Konfigurasikan proyek Java

  1. Ekstrak file zip ke folder lokal yang dekat dengan akar disk, seperti C:\Azure-Samples.
  2. Navigasi ke msal-client-credential-secret subfolder.
  3. Edit src\main\resources\application.properties dan ganti nilai bidang AUTHORITY, , CLIENT_IDdan SECRET dengan cuplikan berikut:
  AUTHORITY=https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/
  CLIENT_ID=Enter_the_Application_Id_Here
  SECRET=Enter_the_Client_Secret_Here

Mana:

  • Enter_the_Application_Id_Here - adalah ID aplikasi (klien) untuk aplikasi yang Anda daftarkan.
  • Enter_the_Tenant_Id_Here - ganti nilai ini dengan Id Penyewa atau Nama penyewa (misalnya, contoso.microsoft.com).
  • Enter_the_Client_Secret_Here: ganti nilai ini dengan rahasia klien yang Anda buat di langkah 1.

Tip

Untuk menemukan nilai ID Aplikasi (klien), ID Direktori (penyewa), buka halaman Gambaran Umum aplikasi. Untuk membuat kunci baru, buka halaman Sertifikat & rahasia.

Jika Anda mencoba menjalankan aplikasi pada saat ini, Anda akan menerima HTTP 403 - Kesalahan terlarang: Insufficient privileges to complete the operation. Kesalahan ini terjadi karena izin khusus aplikasi memerlukan persetujuan Admin: Administrator Global direktori Anda harus memberikan persetujuan untuk aplikasi Anda. Memilih salah satu opsi di bawah ini bergantung pada peran Anda:

Administrator penyewa global

Jika Anda adalah administrator penyewa global, buka halaman Izin API di Pendaftaran aplikasi dan pilih Berikan persetujuan admin untuk {Nama Penyewa} (Di mana {Nama Penyewa} adalah nama direktori Anda).

Pengguna standar

Jika Anda adalah pengguna standar penyewa Anda, maka Anda perlu meminta Administrator Global untuk memberikan persetujuan admin untuk aplikasi Anda. Untuk melakukannya, berikan URL berikut kepada administrator:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Mana:

  • Enter_the_Tenant_Id_Here - ganti nilai ini dengan Id Penyewa atau Nama penyewa (misalnya, contoso.microsoft.com)
  • Enter_the_Application_Id_Here - adalah ID aplikasi (klien) untuk aplikasi yang Anda daftarkan.

Langkah 5: Menjalankan aplikasi

Anda dapat menguji sampel secara langsung dengan menjalankan metode utama ClientCredentialGrant.java dari IDE Anda.

Dari shell atau baris perintah:

$ mvn clean compile assembly:single

Ini akan menghasilkan msal-client-credential-secret-1.0.0.jar file di direktori Anda /targets . Jalankan ini menggunakan Java yang dapat dieksekusi seperti di bawah ini:

$ java -jar msal-client-credential-secret-1.0.0.jar

Setelah berjalan, aplikasi harus menampilkan daftar pengguna dalam penyewa yang dikonfigurasi.

Penting

Aplikasi mulai cepat ini menggunakan rahasia klien untuk mengidentifikasi aplikasi itu sendiri sebagai klien rahasia. Karena rahasia klien ditambahkan sebagai teks biasa ke file proyek, karena alasan keamanan, sebaiknya Anda menggunakan sertifikat alih-alih rahasia klien sebelum mempertimbangkan aplikasi sebagai aplikasi produksi. Untuk informasi selengkapnya tentang cara menggunakan sertifikat, lihat instruksi ini di repositori GitHub yang sama untuk sampel ini, tetapi di folder kedua MSAL-client-credential-certificate.

Informasi selengkapnya

MSAL Java

MSAL Java adalah pustaka yang digunakan untuk memasukkan pengguna dan meminta token yang digunakan untuk mengakses API yang dilindungi oleh platform identitas Microsoft. Seperti yang dijelaskan, mulai cepat ini meminta token menggunakan identitas aplikasi itu sendiri alih-alih izin yang didelegasikan. Alur autentikasi dalam kasus ini dikenal sebagai alur oauth kredensial klien. Untuk informasi selengkapnya tentang cara menggunakan MSAL Java dengan aplikasi daemon, lihat artikel ini.

Tambahkan MSAL4J ke aplikasi Anda dengan menggunakan Maven atau Gradle untuk mengelola dependensi Anda dengan membuat perubahan berikut ke file pom.xml (Maven) atau build.gradle (Gradle) aplikasi.

Dalam pom.xml:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>msal4j</artifactId>
    <version>1.0.0</version>
</dependency>

Dalam build.gradle:

compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'

Inisialisasi MSAL

Tambahkan referensi ke MSAL untuk Java dengan menambahkan kode berikut ke bagian atas file tempat Anda akan menggunakan MSAL4J:

import com.microsoft.aad.msal4j.*;

Lalu, inisialisasi MSAL menggunakan kode berikut:

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);

ConfidentialClientApplication cca =
        ConfidentialClientApplication
                .builder(CLIENT_ID, credential)
                .authority(AUTHORITY)
                .build();
Mana: Deskripsi
CLIENT_SECRET Apakah rahasia klien dibuat untuk aplikasi.
CLIENT_ID Adalah ID Aplikasi (klien) untuk aplikasi terdaftar. Anda dapat menemukan nilai ini di halaman Gambaran Umum aplikasi.
AUTHORITY Titik akhir STS untuk diautentikasi oleh pengguna. Biasanya https://login.microsoftonline.com/{tenant} untuk cloud publik, di mana {tenant} merupakan nama penyewa atau ID penyewa Anda.

Meminta token

Untuk meminta token menggunakan identitas aplikasi, gunakan metode acquireToken:

IAuthenticationResult result;
     try {
         SilentParameters silentParameters =
                 SilentParameters
                         .builder(SCOPE)
                         .build();

         // try to acquire token silently. This call will fail since the token cache does not
         // have a token for the application you are requesting an access token for
         result = cca.acquireTokenSilently(silentParameters).join();
     } catch (Exception ex) {
         if (ex.getCause() instanceof MsalException) {

             ClientCredentialParameters parameters =
                     ClientCredentialParameters
                             .builder(SCOPE)
                             .build();

             // Try to acquire a token. If successful, you should see
             // the token information printed out to console
             result = cca.acquireToken(parameters).join();
         } else {
             // Handle other exceptions accordingly
             throw ex;
         }
     }
     return result;
Mana: Deskripsi
SCOPE Berisi cakupan yang diminta. Untuk klien rahasia, ini harus menggunakan format yang mirip {Application ID URI}/.default dengan menunjukkan bahwa cakupan yang diminta adalah yang ditentukan secara statis dalam objek aplikasi (untuk Microsoft Graph, {Application ID URI} menunjuk ke https://graph.microsoft.com). Untuk API web kustom, {Application ID URI} ditentukan di bawah bagian Mengekspos API di Pendaftaran aplikasi.

Bantuan dan dukungan

Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang aplikasi daemon, lihat halaman arahan skenario.