Saya menulis JACC
penyedia.
Sepanjang jalan, ini berarti menerapkan a PolicyConfiguration
.
The PolicyConfiguration
bertanggung jawab untuk menerima informasi konfigurasi dari server aplikasi, seperti yang izin diperoleh yang peran. Ini agar Policy
nantinya dapat membuat keputusan otorisasi ketika memberikan informasi tentang pengguna saat ini dan apa yang dia coba lakukan.
Namun, itu bukan bagian dari PolicyConfiguration
kontrak (mengerikan) untuk mempertahankan pemetaan antara peran dan izin mereka, dan Principals
yang ditugaskan untuk peran itu.
Biasanya - selalu, sungguh - server aplikasi merumahkan pemetaan ini. Misalnya, pada Glassfish, Anda memengaruhi pemetaan ini dengan memasok hal-hal seperti sun-web.xml
dan sun-ejb-jar.xml
dan seterusnya dengan modul Java EE Anda. (File khusus vendor ini bertanggung jawab untuk mengatakan, misalnya, superusers
adalah grup yang akan ditugaskan peran aplikasi admins
.)
Saya ingin menggunakan kembali fungsionalitas yang disediakan file-file ini, dan saya ingin melakukannya untuk sebanyak mungkin server aplikasi.
Inilah - benar-benar sewenang-wenang - IBM mengambil masalah ini, yang tampaknya mengkonfirmasi kecurigaan saya bahwa apa yang ingin saya lakukan pada dasarnya tidak mungkin . (Lebih banyak amunisi untuk kasus saya bahwa kontrak Java EE khusus ini tidak sebanding dengan kertas yang dicetak.)
Pertanyaan saya: bagaimana saya mendapatkan informasi pemetaan pokok-ke-peran ini di - sebagai permulaan - Glassfish dan JBoss dari dalam PolicyConfiguration
? Jika ada cara standar untuk melakukannya yang tidak saya sadari, saya semua tahu.
sumber
Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.
Lihat docs.oracle.com/cd/E24329_01/web.1211/e24485/…Jawaban:
Jawaban singkatnya adalah: tidak ada cara standar untuk melakukannya.
Meskipun Glassfish dan JBoss mendukung pemetaan pokok-ke-peran, JACC tidak menganggap semua wadah berfungsi, dan karenanya mendelegasikan tanggung jawab menjaga pemetaan tersebut ke implementasi penyedia JACC. Dari dokumen (lihat:
PolicyConfiguration.addToRole
metode ):Dengan kata lain, Anda perlu menerapkannya sendiri di dalam penyedia JACC Anda untuk setiap wadah. Untuk JBoss, misalnya, Anda bisa menggunakan salah satu subclass dari
AbstractRolesMappingProvider
.sumber
PolicyContextHandler
khusus terdaftar oleh penyedia untuk tujuan itu, misalnya) menyampaikan sebaliknya. Penyedia lain juga bisa mengabaikan gagasan peran sama sekali (dan karenanya wadah-disediakanPolicyConfiguration
), bukannya beroperasi hanya pada pemetaan prinsip-ke-izin (disediakan aplikasi) (dan di mana izin tersebut tidak perlu terbatas pada yang JACC).