Amankan aplikasi WebSphere Java menggunakan grup dan klaim grup

Artikel ini menunjukkan cara membuat aplikasi Java WebSphere yang memungkinkan pengguna masuk dengan Pustaka Autentikasi Microsoft (MSAL) for Java. Aplikasi ini juga membatasi akses ke halaman berdasarkan keanggotaan grup keamanan ID Microsoft Entra.

Diagram berikut menunjukkan topologi aplikasi:

Diagram yang memperlihatkan topologi aplikasi.

Aplikasi klien menggunakan MSAL untuk Java (MSAL4J) untuk mengautentikasi pengguna ke tenant Microsoft Entra ID dan memperoleh token ID dari Microsoft Entra ID. Token ID membuktikan bahwa pengguna diautentikasi dengan penyewa ini. Aplikasi ini melindungi rutenya sesuai dengan status autentikasi pengguna dan keanggotaan grup.

Untuk video yang membahas skenario ini, lihat Menerapkan otorisasi dalam aplikasi Anda menggunakan peran aplikasi, grup keamanan, cakupan, dan peran direktori.

Prasyarat

  • JDK versi 8 atau lebih tinggi
  • Maven 3
  • Penyewa Microsoft Entra ID. Untuk informasi selengkapnya, lihat Cara mendapatkan tenant Microsoft Entra ID.
  • Akun pengguna di tenant Microsoft Entra ID milik Anda sendiri.
  • Dua grup keamanan, dan , yang berisi pengguna yang ingin Anda gunakan untuk pengujian.
  • WebSphere
  • Visual Studio Code
  • Alat Azure untuk Visual Studio Code

Rekomendasi

  • Memiliki pemahaman dasar tentang Java / Jakarta Servlets.
  • Beberapa keakraban dengan terminal Linux/OSX.
  • jwt.ms untuk memeriksa token Anda.
  • Fiddler untuk memantau aktivitas jaringan dan melakukan pemecahan masalah.
  • Ikuti Blog Microsoft Entra untuk tetap up-to-date dengan perkembangan terbaru.

Siapkan sampel

Bagian berikut menunjukkan kepada Anda cara menyiapkan aplikasi sampel.

Mengkloning atau mengunduh repositori sampel

Untuk mengkloning sampel, buka jendela Bash dan gunakan perintah berikut:

git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/3-Authorization-II/groups

Atau, buka repositori ms-identity-msal-java-samples, lalu unduh sebagai file .zip dan ekstrak ke hard drive Anda.

Penting

Untuk menghindari batasan panjang jalur file pada Windows, kloning atau ekstrak repositori ke direktori di dekat akar hard drive Anda.

Daftarkan aplikasi sampel dengan tenant Microsoft Entra ID Anda

Ada satu proyek dalam sampel ini. Bagian berikut menunjukkan kepada Anda cara mendaftarkan aplikasi menggunakan portal Azure.

Pilih penyewa ID Microsoft Entra tempat Anda ingin membuat aplikasi

Untuk memilih penyewa Anda, gunakan langkah-langkah berikut:

  1. Masuk ke portal Azure.

  2. Jika akun Anda terdapat di lebih dari satu penyewa Microsoft Entra ID, pilih profil Anda di sudut portal Azure, lalu pilih Alihkan direktori untuk mengalihkan sesi Anda ke penyewa Microsoft Entra ID yang diinginkan.

Mendaftarkan aplikasi (java-servlet-webapp-groups)

Pertama, daftarkan aplikasi baru di portal Azure dengan mengikuti petunjuk dalam Mulai cepat: Mendaftarkan aplikasi dengan platform identitas Microsoft.

Kemudian, gunakan langkah-langkah berikut untuk menyelesaikan pendaftaran:

  1. Buka halaman platform identitas Microsoft untuk pengembang Pendaftaran aplikasi.

  2. Pilih Pendaftaran baru.

  3. Di halaman Daftarkan aplikasi yang muncul, masukkan informasi pendaftaran aplikasi berikut ini:

    • Di bagian Nama, masukkan nama aplikasi yang deskriptif untuk ditampilkan kepada pengguna aplikasi - misalnya, .
    • Di bawah Jenis akun yang didukung, pilih Hanya akun dalam direktori organisasi ini.
    • Di bagian Redirect URI, pilih Web di kotak kombo dan masukkan URI pengalihan berikut: .
  4. Pilih Daftar untuk membuat aplikasi.

  5. Pada halaman registrasi aplikasi, temukan dan salin nilai ID Aplikasi (klien) untuk digunakan nanti. Anda menggunakan nilai ini dalam file atau file konfigurasi aplikasi Anda.

  6. Pilih Simpan untuk menerapkan perubahan.

  7. Pada halaman pendaftaran aplikasi, pilih Sertifikat & rahasia di panel navigasi untuk membuka halaman tempat Anda dapat membuat rahasia dan mengunggah sertifikat.

  8. Di bagian Rahasia klien, pilih Rahasia klien baru.

  9. Ketik deskripsi - misalnya, rahasia aplikasi.

  10. Pilih kedaluwarsa untuk rahasia atau tentukan masa pakai kustom. Rahasia klien dibatasi hingga masa pakai maksimum 24 bulan, dan Microsoft merekomendasikan kedaluwarsa kurang dari 12 bulan. Untuk aplikasi produksi, pilih sertifikat atau kredensial identitas federasi daripada rahasia klien.

  11. Pilih Tambahkan. Nilai yang dihasilkan ditampilkan.

  12. Salin dan simpan nilai yang dihasilkan untuk digunakan di langkah selanjutnya. Anda memerlukan nilai ini untuk file konfigurasi kode Anda. Nilai ini tidak ditampilkan lagi, dan Anda tidak dapat mengambilnya dengan cara lain. Jadi, pastikan untuk menyimpannya dari portal Azure sebelum Anda menavigasi ke layar atau panel lain.

  13. Pada halaman pendaftaran aplikasi, pilih izin API dari panel navigasi untuk membuka halaman untuk menambahkan akses ke API yang dibutuhkan aplikasi Anda.

  14. Pilih Tambahkan izin.

  15. Pastikan bahwa tab API Microsoft dipilih.

  16. Di bagian Microsoft API yang umum digunakan, pilih Microsoft Graph.

  17. Di bagian Izin yang didelegasikan, pilih User.Read dan GroupMember.Read.All dari daftar. Gunakan kotak pencarian jika perlu.

  18. Pilih Tambahkan izin.

  19. memerlukan persetujuan admin, jadi pilih Berikan/cabut persetujuan admin untuk {tenant}, lalu pilih Ya ketika Anda diminta mengonfirmasi apakah ingin memberikan persetujuan untuk izin yang diminta bagi semua akun di tenant. Anda harus menjadi admin penyewa MICROSOFT Entra ID untuk melakukan tindakan ini.


Konfigurasikan aplikasi (java-servlet-webapp-groups) agar menggunakan pendaftaran aplikasi Anda

Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi:

Catatan

Pada langkah-langkah berikut, sama dengan atau .

  1. Buka proyek di IDE Anda.

  2. Buka file ./src/main/resources/authentication.properties.

  3. Temukan string . Ganti nilai yang ada dengan ID tenant Microsoft Entra Anda jika Anda mendaftarkan aplikasi dengan opsi Akun di direktori organisasi ini saja.

  4. Temukan string dan ganti nilai yang ada dengan ID aplikasi atau dari aplikasi yang disalin dari portal Azure.

  5. Temukan string dan ganti nilai yang ada dengan nilai yang Anda simpan saat membuat aplikasi di portal Azure.

Mengonfigurasi kelompok keamanan

Anda memiliki opsi berikut yang tersedia tentang bagaimana Anda dapat mengonfigurasi aplikasi Anda lebih lanjut untuk menerima klaim grup:

  • Mendapatkan semua grup yang ditetapkan kepada pengguna yang masuk di tenant Microsoft Entra ID, termasuk grup bertingkat. Untuk informasi selengkapnya, lihat bagian Mengonfigurasi aplikasi Anda untuk menerima semua grup yang ditetapkan kepada pengguna yang masuk, termasuk grup berlapis.

  • Dapatkan nilai klaim kelompok dari sekumpulan kelompok yang telah difilter dan yang telah diprogram agar dapat digunakan oleh aplikasi Anda. Untuk informasi selengkapnya, lihat bagian Mengonfigurasi aplikasi Anda untuk menerima nilai klaim grup dari sekumpulan grup yang difilter yang mungkin ditetapkan kepada pengguna. Opsi ini tidak tersedia dalam edisi Gratis Microsoft Entra ID.

Catatan

Untuk mendapatkan atau grup lokal alih-alih ID grup, lihat bagian Prasyarat untuk menggunakan atribut grup yang disinkronkan dari Direktori Aktif di Mengonfigurasi klaim grup untuk aplikasi dengan menggunakan Microsoft Entra ID.

Konfigurasikan aplikasi Anda agar menerima semua grup yang ditetapkan kepada pengguna yang masuk, termasuk grup bertingkat

Untuk mengonfigurasi aplikasi Anda, gunakan langkah-langkah berikut:

  1. Pada halaman pendaftaran aplikasi, pilih Token Configuration di panel navigasi untuk membuka halaman tempat Anda dapat mengonfigurasi klaim yang disediakan dalam token yang diterbitkan untuk aplikasi Anda.

  2. Pilih Tambahkan klaim grup untuk membuka layar Edit Klaim Grup.

  3. Pilih Grup keamanan ATAU opsi Semua grup (mencakup daftar distribusi, tetapi tidak mencakup grup yang ditetapkan ke aplikasi). Memilih kedua opsi tersebut membatalkan efek dari opsi Security Groups.

  4. Di bagian ID, pilih ID Grup. Pilihan ini menyebabkan Microsoft Entra ID mengirim ID objek dari grup yang ditetapkan kepada pengguna dalam klaim grup pada token ID yang diterima aplikasi Anda setelah pengguna masuk.

Konfigurasikan aplikasi Anda untuk menerima nilai klaim grup dari sekumpulan grup yang difilter yang mungkin ditetapkan kepada seorang pengguna

Opsi ini berguna ketika kasus berikut ini benar:

  • Aplikasi Anda memerlukan serangkaian grup tertentu yang dipilih, yang mungkin ditetapkan kepada pengguna yang masuk.
  • Aplikasi Anda tidak memerlukan semua grup keamanan yang ditetapkan untuk pengguna ini di tenant.

Opsi ini membantu aplikasi Anda menghindari masalah overage.

Catatan

Fitur ini tidak tersedia dalam edisi Microsoft Entra ID Free.

Penetapan grup bertingkat tidak tersedia saat Anda menggunakan opsi ini.

Untuk mengaktifkan opsi ini di aplikasi Anda, gunakan langkah-langkah berikut:

  1. Pada halaman pendaftaran aplikasi, pilih Token Configuration di panel navigasi untuk membuka halaman tempat Anda dapat mengonfigurasi klaim yang disediakan dalam token yang diterbitkan untuk aplikasi Anda.

  2. Pilih Tambahkan klaim grup untuk membuka layar Edit Klaim Grup.

  3. Pilih Grup yang ditugaskan ke aplikasi.

    Memilih opsi lain - seperti Grup Keamanan atau Semua grup (termasuk daftar distribusi tetapi bukan grup yang ditetapkan ke aplikasi) - meniadakan manfaat yang diperoleh aplikasi Anda dari memilih untuk menggunakan opsi ini.

  4. Di bagian ID, pilih ID Grup. Pilihan ini mengakibatkan Microsoft Entra ID mengirimkan ID objek dari grup yang ditetapkan kepada pengguna dalam klaim grup dari token ID.

  5. Jika Anda membuka API web menggunakan opsi Expose an API, Anda juga dapat memilih opsi Group ID di bagian Access. Opsi ini menyebabkan Microsoft Entra ID mengirim ID objek dari grup yang ditetapkan kepada pengguna dalam klaim grup dari token akses.

  6. Pada halaman pendaftaran aplikasi, pilih Gambaran Umum di panel navigasi untuk membuka layar gambaran umum aplikasi.

  7. Pilih hyperlink dengan nama aplikasi Anda di Aplikasi terkelola di direktori lokal. Judul bidang ini mungkin terpotong - misalnya . Saat Anda memilih tautan ini, Anda akan diarahkan ke halaman Enterprise Application Overview yang terkait dengan prinsipal layanan untuk aplikasi Anda di tenant tempat Anda membuatnya. Anda dapat menavigasi kembali ke halaman pendaftaran aplikasi dengan menggunakan tombol kembali browser Anda.

  8. Pilih Pengguna dan grup di panel navigasi untuk membuka halaman tempat Anda bisa menetapkan pengguna dan grup ke aplikasi Anda.

  9. Pilih Tambahkan Pengguna.

  10. Pilih Pengguna dan Grup dari layar yang dihasilkan.

  11. Pilih grup yang ingin Anda tetapkan ke aplikasi ini.

  12. Pilih Pilih untuk menyelesaikan pemilihan grup.

  13. Pilih Tetapkan untuk menyelesaikan proses menetapkan grup.

    Aplikasi Anda sekarang menerima grup yang dipilih ini dalam klaim grup saat pengguna masuk ke aplikasi Anda adalah anggota dari satu atau beberapa grup yang ditetapkan ini.

  14. Pilih Properti pada panel navigasi untuk membuka halaman yang mencantumkan properti dasar aplikasi Anda. Atur bendera Penetapan pengguna yang diperlukan? ke Ya.

Penting

Saat Anda mengatur Penetapan pengguna diperlukan? ke Ya, MICROSOFT Entra ID memeriksa bahwa hanya pengguna yang ditetapkan ke aplikasi Anda di panel Pengguna dan grup yang dapat masuk ke aplikasi Anda. Anda dapat menetapkan pengguna secara langsung atau dengan menetapkan grup keamanan tempat mereka berada.

Mengonfigurasi aplikasi (java-servlet-webapp-groups) untuk mengenali ID grup

Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi:

Penting

Pada halaman Token Configuration, jika Anda memilih opsi apa pun selain groupID - seperti DNSDomain\sAMAccountName - Anda harus memasukkan nama grup dalam langkah-langkah berikut - misalnya, - alih-alih ID objek:

  1. Buka file ./src/main/resources/authentication.properties.

  2. Temukan string dan ganti nilai yang ada dengan ID objek grup , yang Anda salin dari portal Azure. Hapus kurung kurawal dari nilai placeholder juga.

  3. Temukan string dan ganti nilai yang ada dengan ID objek grup , yang Anda salin dari portal Azure. Hapus kurung kurawal dari nilai placeholder juga.

Susun sampel

Untuk membuat sampel menggunakan Maven, navigasikan ke direktori yang berisi file pom.xml untuk sampel, lalu jalankan perintah berikut:

mvn clean package

Perintah ini menghasilkan file .war yang dapat Anda jalankan di berbagai server aplikasi.

Jalankan sampel

Instruksi ini mengasumsikan bahwa Anda menginstal WebSphere dan menyiapkan server. Anda dapat menggunakan panduan di Menyebarkan Kluster WebSphere Application Server (tradisional) di Azure Virtual Machines untuk konfigurasi server dasar.

Sebelum Anda dapat menyebarkan ke WebSphere, gunakan langkah-langkah berikut untuk membuat beberapa perubahan konfigurasi dalam sampel itu sendiri lalu membangun atau membangun kembali paket:

  1. Buka file authentication.properties milik aplikasi Anda dan ubah nilai menjadi URL server dan nomor port yang akan Anda gunakan, seperti yang ditunjukkan dalam contoh berikut:

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<server-url>:<port-number>/msal4j-servlet-auth/
    
  2. Setelah menyimpan file ini, gunakan perintah berikut untuk membangun kembali aplikasi Anda:

    mvn clean package
    
  3. Setelah kode selesai dibangun, salin file .war ke sistem file server target Anda.

Anda juga perlu membuat perubahan yang sama di registrasi aplikasi Azure, tempat Anda menetapkannya di portal Azure sebagai nilai Redirect URI pada tab Authentication.

  1. Buka halaman platform identitas Microsoft untuk pengembang Pendaftaran aplikasi.

  2. Gunakan kotak pencarian untuk mencari pendaftaran aplikasi Anda - misalnya, .

  3. Buka pendaftaran aplikasi Anda dengan memilih namanya.

  4. Pilih Autentikasi dari menu.

  5. Di bagian WebURI Pengalihan, pilih Tambahkan URI.

  6. Isi URI aplikasi Anda dengan menambahkan /auth/redirect - misalnya, .

  7. Pilih Simpan.

Gunakan langkah-langkah berikut untuk menyebarkan sampel menggunakan Konsol Solusi Terintegrasi WebSphere:

  1. Pada tab Aplikasi, pilih Aplikasi Baru, lalu Aplikasi Perusahaan Baru.

  2. Pilih file .war yang Anda buat, lalu pilih Berikutnya sampai Anda mencapai langkah penginstalan Petakan root konteks untuk modul Web. Pengaturan default lainnya harus baik-baik saja.

  3. Untuk root konteks, atur nilainya agar sama dengan nilai setelah nomor port di 'URI Pengalihan' yang Anda tetapkan dalam konfigurasi sampel atau pendaftaran aplikasi Azure. Artinya, jika URI pengalihan adalah , maka akar konteks harus .

  4. Pilih Selesai.

  5. Setelah aplikasi selesai diinstal, buka bagian Aplikasi perusahaan WebSphere di tab Aplikasi .

  6. Pilih file .war yang Anda instal dari daftar aplikasi lalu pilih Mulai untuk menyebarkan.

  7. Setelah selesai diterapkan, buka dan Anda seharusnya dapat melihat aplikasinya.

Jelajahi contoh

Gunakan langkah-langkah berikut untuk menjelajahi sampel:

  1. Perhatikan status masuk atau keluar yang ditampilkan di tengah layar.
  2. Pilih tombol peka konteks di sudut. Tombol ini bertuliskan Masuk saat pertama kali Anda menjalankan aplikasi.
  3. Pada halaman berikutnya, ikuti instruksi dan masuk menggunakan akun dalam tenant Microsoft Entra ID.
  4. Pada layar persetujuan, perhatikan cakupan yang diminta.
  5. Perhatikan bahwa tombol peka konteks sekarang mengatakan Keluar dan menampilkan nama pengguna Anda.
  6. Pilih Detail Token ID untuk melihat beberapa klaim yang telah didekode dari token ID.
  7. Pilih Grup untuk melihat informasi tentang keanggotaan grup keamanan untuk pengguna yang masuk.
  8. Pilih Hanya Admin atau Pengguna Reguler untuk mengakses endpoint yang dilindungi oleh klaim grup.
    • Jika pengguna yang sudah masuk berada dalam grup , pengguna tersebut dapat mengakses kedua halaman.
    • Jika pengguna yang masuk berada dalam grup , pengguna tersebut hanya dapat mengakses halaman Regular User.
    • Jika pengguna yang sedang login tidak termasuk ke salah satu dari kedua grup tersebut, pengguna tersebut tidak dapat mengakses salah satu pun dari kedua halaman tersebut.
  9. Gunakan tombol di sudut untuk keluar.
  10. Setelah keluar, pilih ID Token Details untuk melihat bahwa aplikasi menampilkan error alih-alih klaim token ID saat pengguna tidak diizinkan.

Tentang kode

Sampel ini menggunakan MSAL for Java (MSAL4J) untuk memasukkan pengguna dan mendapatkan token ID yang mungkin berisi klaim grup. Jika terdapat terlalu banyak grup untuk dimasukkan ke dalam token ID, contoh ini menggunakan Microsoft Graph SDK for Java untuk memperoleh data keanggotaan grup dari Microsoft Graph. Berdasarkan grup tempat pengguna menjadi anggota, pengguna yang sedang masuk dapat mengakses tidak satu pun, satu, atau kedua halaman yang dilindungi, dan .

Jika Anda ingin mereplikasi perilaku sampel ini, Anda harus menambahkan MSAL4J dan Microsoft Graph SDK ke proyek Anda menggunakan Maven. Anda dapat menyalin file pom.xml serta isi folder helpers dan authservlets di folder src/main/java/com/microsoft/azuresamples/msal4j. Anda juga memerlukan file authentication.properties. Kelas dan file ini berisi kode generik yang dapat Anda gunakan dalam berbagai aplikasi. Anda juga dapat menyalin bagian lain dari sampel ini, tetapi kelas dan file lainnya dibuat khusus untuk memenuhi tujuan sampel ini.

Isi

Tabel berikut ini memperlihatkan konten folder proyek sampel:

Berkas/folder Deskripsi
src/main/java/com/microsoft/azuresamples/msal4j/groupswebapp/ Direktori ini berisi kelas yang menentukan logika bisnis backend aplikasi.
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ Direktori ini berisi kelas-kelas yang digunakan untuk endpoint login dan logout.
*Servlet.java Semua titik akhir yang tersedia ditentukan dalam kelas Java dengan nama yang berakhiran Servlet.
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ Kelas bantu untuk autentikasi.
AuthenticationFilter.java Mengalihkan permintaan yang belum diautentikasi ke endpoint yang dilindungi ke halaman 401.
src/main/resources/authentication.properties ID Microsoft Entra dan konfigurasi program.
src/main/webapp/ Direktori ini berisi templat UI - JSP
CHANGELOG.md Daftar perubahan pada sampel.
CONTRIBUTING.md Panduan untuk berkontribusi pada sampel.
LISENSI Lisensi untuk sampel.

Memproses klaim grup dalam token, termasuk menangani kelebihan jumlah klaim

Bagian berikut menjelaskan cara aplikasi memproses klaim grup.

Kelompok tersebut mengklaim

ID objek dari grup keamanan tempat pengguna yang masuk adalah anggota dikembalikan dalam klaim grup token, yang ditunjukkan dalam contoh berikut:

{
  ...
  "groups": [
    "0bbe91cc-b69e-414d-85a6-a043d6752215",
    "48931dac-3736-45e7-83e8-015e6dfd6f7c",]
  ...
}

Klaim kelebihan penggunaan grup

Untuk memastikan bahwa ukuran token tidak melebihi batas ukuran header HTTP, platform identitas Microsoft membatasi jumlah ID objek yang disertakan dalam klaim grup.

Batas kelebihan penggunaan adalah 150 untuk token SAML, 200 untuk token JWT, dan 6 untuk aplikasi Halaman Tunggal. Jika pengguna adalah anggota lebih banyak grup daripada batas kelebihan penggunaan, maka platform identitas Microsoft tidak memancarkan ID grup dalam klaim grup dalam token. Sebaliknya, token tersebut menyertakan klaim overage yang mengindikasikan bahwa aplikasi harus mengkueri Microsoft Graph API untuk mengambil informasi keanggotaan grup pengguna, seperti yang ditunjukkan dalam contoh berikut:

{
  ...
  "_claim_names": {
    "groups": "src1"
    },
    {
   "_claim_sources": {
    "src1": {
        "endpoint":"[Graph Url to get this user's group membership from]"
        }
    }
  ...
}

Buat skenario kelebihan penggunaan dalam sampel ini untuk pengujian

Untuk membuat skenario kelebihan penggunaan, Anda bisa menggunakan langkah-langkah berikut:

  1. Anda dapat menggunakan file BulkCreateGroups.ps1 yang disediakan di folder AppCreationScripts untuk membuat sejumlah besar grup dan menetapkan pengguna kepada mereka. File ini membantu menguji skenario kelebihan penggunaan selama pengembangan. Jangan lupa untuk mengubah milik pengguna yang disediakan dalam skrip BulkCreateGroups.ps1.

  2. Saat Anda menjalankan contoh ini dan terjadi kelebihan penggunaan, Anda akan melihat _claim_names di beranda setelah pengguna masuk.

  3. Kami sangat menyarankan agar Anda menggunakan fitur pemfilteran grup, jika memungkinkan, untuk menghindari kelebihan grup. Untuk informasi selengkapnya, lihat bagian Mengonfigurasi aplikasi Anda untuk menerima nilai klaim grup dari sekumpulan grup yang difilter yang mungkin ditetapkan kepada pengguna.

  4. Jika Anda tidak dapat menghindari terjadinya kelebihan grup, kami sarankan Anda menggunakan langkah-langkah berikut untuk memproses klaim grup dalam token Anda:

    1. Periksa klaim _claim_names dengan salah satu nilai yang berupa grup. Klaim ini menunjukkan adanya kelebihan tagihan.
    2. Jika ditemukan, lakukan panggilan ke titik akhir yang ditentukan dalam _claim_sources untuk mengambil grup pengguna.
    3. Jika tidak ditemukan, periksa klaim groups untuk mengetahui grup pengguna.

Catatan

Menangani kelebihan memerlukan panggilan ke Microsoft Graph untuk membaca keanggotaan grup pengguna yang sedang masuk, sehingga aplikasi Anda harus memiliki izin GroupMember.Read.All agar fungsi getMemberObjects dapat berhasil dijalankan.

Untuk informasi selengkapnya tentang pemrograman untuk Microsoft Graph, lihat video Pengantar Microsoft Graph untuk pengembang.

ConfidentialClientApplication

Sebuah instance dibuat di file AuthHelper.java, seperti yang ditunjukkan pada contoh berikut. Objek ini membantu membuat URL otorisasi Microsoft Entra dan juga membantu menukar token autentikasi dengan token akses.

// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
                      .builder(CLIENT_ID, secret)
                      .authority(AUTHORITY)
                      .build();

Parameter berikut digunakan untuk instansiasi:

  • ID klien aplikasi.
  • Rahasia klien, yang merupakan persyaratan untuk Aplikasi Klien Rahasia.
  • Otoritas Microsoft Entra ID, yang mencakup ID tenant Microsoft Entra Anda.

Dalam sampel ini, nilai-nilai ini dibaca dari file authentication.properties menggunakan pembaca properti dalam file Config.java .

Panduan langkah demi langkah

Langkah-langkah berikut menyediakan panduan fungsionalitas aplikasi:

  1. Langkah pertama dalam proses masuk adalah mengirim permintaan ke endpoint untuk tenant Microsoft Entra ID Anda. Instans MSAL4J digunakan untuk menyusun URL permintaan otorisasi. Aplikasi mengalihkan browser ke URL ini, yang merupakan tempat pengguna masuk.

    final ConfidentialClientApplication client = getConfidentialClientInstance();
    AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES))
            .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build();
    
    final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString();
    contextAdapter.redirectUser(authorizeUrl);
    

    Daftar berikut menjelaskan fitur kode ini:

    • : Parameter yang harus ditetapkan untuk membuat AuthorizationRequestUrl.
    • : Tempat Microsoft Entra mengalihkan browser—beserta kode otorisasi—setelah mengumpulkan kredensial pengguna. Harus cocok dengan URI pengalihan dalam pendaftaran aplikasi Microsoft Entra ID di Azure portal.
    • : Cakupan izin merupakan izin yang diminta oleh aplikasi.
      • Biasanya, ketiga cakupan sudah memadai untuk menerima respons ID token.
      • Daftar lengkap cakupan yang diminta oleh aplikasi dapat ditemukan di file authentication.properties . Anda dapat menambahkan lebih banyak cakupan akses, seperti .
  2. Pengguna disajikan dengan perintah masuk oleh ID Microsoft Entra. Jika upaya masuk berhasil, browser pengguna dialihkan ke titik akhir pengalihan aplikasi. Permintaan yang valid ke endpoint ini berisi kode otorisasi.

  3. Instans kemudian menukarkan kode otorisasi ini dengan token ID dan token akses dari Microsoft Entra ID.

    // First, validate the state, then parse any error codes in response, then extract the authCode. Then:
    // build the auth code params:
    final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
            .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build();
    
    // Get a client instance and leverage it to acquire the token:
    final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance();
    final IAuthenticationResult result = client.acquireToken(authParams).get();
    

    Daftar berikut menjelaskan fitur kode ini:

    • : Parameter yang harus ditetapkan untuk menukar kode otorisasi dengan token ID dan/atau token akses.
    • : Kode otorisasi yang diterima di endpoint pengalihan.
    • : URI pengalihan yang digunakan pada langkah sebelumnya harus dikirimkan kembali.
    • : Cakupan akses yang digunakan pada langkah sebelumnya harus diberikan kembali.
  4. Jika berhasil, klaim token diekstrak. Jika pemeriksaan nonce berhasil, hasilnya ditempatkan dalam - sebuah instans dari - dan disimpan dalam sesi. Aplikasi kemudian dapat membuat instance dari sesi melalui instance setiap kali aplikasi memerlukan akses ke sana, seperti yang ditunjukkan dalam kode berikut:

    // parse IdToken claims from the IAuthenticationResult:
    // (the next step - validateNonce - requires parsed claims)
    context.setIdTokenClaims(result.idToken());
    
    // if nonce is invalid, stop immediately! this could be a token replay!
    // if validation fails, throws exception and cancels auth:
    validateNonce(context);
    
    // set user to authenticated:
    context.setAuthResult(result, client.tokenCache().serialize());
    
    // handle groups overage if it has occurred.
    handleGroupsOverage(contextAdapter);
    
  5. Setelah langkah sebelumnya, Anda dapat mengambil keanggotaan grup dengan memanggil menggunakan instans .

  6. Jika pengguna menjadi anggota terlalu banyak grup—lebih dari 200—panggilan ke mungkin menghasilkan hasil kosong jika bukan karena panggilan ke . Sementara, mengembalikan , yang menandakan bahwa telah terjadi kelebihan kuota dan bahwa untuk mendapatkan daftar grup lengkap, diperlukan panggilan ke Microsoft Graph. Lihat metode di AuthHelper.java untuk mengetahui bagaimana aplikasi ini menggunakan saat terjadi overage.

Melindungi rute

Lihat AuthenticationFilter.java untuk melihat bagaimana aplikasi sampel memfilter akses ke rute. Dalam file authentication.properties, properti app.protect.authenticated berisi rute yang dipisahkan dengan koma dan hanya dapat diakses oleh pengguna yang terautentikasi, seperti yang ditunjukkan pada contoh berikut:

# for example, /token_details requires any user to be signed in and does not require special groups claim
app.protect.authenticated=/token_details

Rute mana pun yang tercantum dalam kumpulan aturan yang dipisahkan dengan koma di bawah juga tidak dapat diakses oleh pengguna terautentikasi non-terautentikasi, seperti yang ditunjukkan dalam contoh berikut. Namun, rute ini juga berisi daftar keanggotaan grup yang dipisahkan spasi. Hanya pengguna milik setidaknya salah satu grup yang sesuai yang dapat mengakses rute ini setelah mengautentikasi.

# define short names for group IDs here for the app. This is useful in the next property (app.protect.groups).
# EXCLUDE the curly braces, they are in this file only as delimiters.
# example:
# app.groups=groupA abcdef-qrstuvw-xyz groupB abcdef-qrstuv-wxyz
app.groups=admin {enter-your-admins-group-id-here}, user {enter-your-users-group-id-here}

# A route and its corresponding group(s) that can view it, <space-separated>; the start of the next route & its group(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by admin group, /regular_user can be accessed by admin group and user group
app.protect.groups=/admin_only admin, /regular_user admin user

Cakupan

Cakupan izin memberi tahu Microsoft Entra ID tentang tingkat akses yang diminta oleh aplikasi.

Berdasarkan cakupan yang diminta, MICROSOFT Entra ID menyajikan dialog persetujuan kepada pengguna saat masuk. Jika pengguna menyetujui satu atau beberapa scope dan memperoleh token, scope yang telah disetujui dikodekan ke dalam yang dihasilkan.

Untuk cakupan yang diminta oleh aplikasi, lihat authentication.properties. Secara bawaan, aplikasi menetapkan nilai scopes ke . Cakupan Microsoft Graph API khusus ini diperlukan jika aplikasi perlu memanggil Graph untuk mendapatkan keanggotaan grup pengguna.

Informasi selengkapnya

  • Pustaka Autentikasi Microsoft (MSAL) untuk Java
  • Platform Identitas Microsoft (Microsoft Entra ID untuk pengembang)
  • Mulai Cepat: Mendaftarkan aplikasi di platform identitas Microsoft
  • Memahami pengalaman persetujuan aplikasi Microsoft Entra ID
  • Memahami persetujuan pengguna dan administrator
  • Contoh kode MSAL

Langkah selanjutnya

Sebarkan aplikasi Java WebSphere ke WebSphere tradisional di Azure Virtual Machines