Bir JACC sağlayıcısı, konuşlandırıldığı sunucunun Ana Yoldan Eşleme özelliklerini nasıl kullanabilir?


154

Bir JACCsağlayıcı yazıyorum .

Yol boyunca bu, a PolicyConfiguration.

PolicyConfigurationİzinler hangi rollerin için tahakkuk gibi hangi uygulama sunucusu, yapılandırma bilgilerini kabul sorumludur. Böylece, Policydaha sonra mevcut kullanıcı ve ne yapmaya çalıştığı hakkında bilgi verildiğinde yetkilendirme kararları verilebilir .

Ancak, PolicyConfigurationroller ve izinleri arasında bir eşleme sağlamak ve Principalsbu rollere atanmış olan (iğrenç) sözleşmesinin bir parçası değildir .

Genellikle - her zaman, gerçekten - bir uygulama sunucusu bu eşlemeyi barındırır. Örneğin, GlassFish üzerinde, gibi şeyler sağlayarak bu eşleştirmeyi etkileyen sun-web.xmlve sun-ejb-jar.xmlJava EE modülleri ile ilgili ve bu yüzden. (Bu satıcıya özgü dosyalar, örneğin superusersuygulama rolünün atanması gereken bir grup olduğunu söylemekten sorumludur admins.)

Bu dosyaların sağladığı işlevselliği yeniden kullanmak istiyorum ve bunu mümkün olduğunca geniş bir uygulama sunucuları dizisi için yapmak istiyorum.

İşte - tamamen keyfi olarak - IBM'in konuyu ele alması, bu da yapmak istediğim şeyin aslında imkansız olduğuna dair şüphemi doğrulıyor gibi görünüyor . (Davam için bu özel Java EE sözleşmesinin basıldığı kağıda değmediği için daha fazla mühimmat.)

Sorum: Yeni başlayanlar için - Glassfish ve JBoss'un bu temelden role-mapping bilgisine bir içinden PolicyConfigurationnasıl ulaşabilirim ? Bunu bilmediğim standart bir yol varsa, tamamen kulaklarım.


7
Bu konuda ilerleme kaydettiniz mi? Taşınabilir web uygulamaları oluşturmak için de bir JACC sağlayıcısı ve ayrıca bir JASPIC kimlik doğrulama sağlayıcısı yazmak istiyorum ...
perissf

Bu da pek umut verici gelmiyor: Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.Bkz. Docs.oracle.com/cd/E24329_01/web.1211/e24485/…
Arjan Tijms

2
Şu anda bunu benim almak, her zaman JACC sağlayıcınızın, bu nedenle de yazmak zorunda olduğunuz bir JASPIC sağlayıcısına bağlandığından emin olmanız gerektiğidir. Bu rotaya henüz gitmedim ama denemek masamda.
Laird Nelson

@LairdNelson, zamanınız varsa, muhtemelen JASPIC yorumunuza bir cevap yazmalısınız. Bu kulağa umut verici geliyor ve bu soruda 300 itibar ödülü var.
jimhark

5
Selam; kimseyi askıda tutmaya çalışmaz. :-) Burada acele edebileceğim bir cevabım yok. Ron Monzillo'yu bana anlayabileceği bir şekilde bir JACC sağlayıcısına ana rol atamalarını almanın tek yolunun JASPIC uygulamasının etkin bir şekilde birleştirilmesi olduğunu tavsiye ettiğini hatırlıyorum.
Laird Nelson

Yanıtlar:


3

Kısa cevap şudur: Bunu yapmanın standart bir yolu yoktur.

Glassfish ve JBoss ana rol eşlemelerini desteklese de, JACC tüm kapsayıcıların yaptıklarını varsaymaz ve bu nedenle bu eşlemeleri JACC sağlayıcı uygulamasında tutma sorumluluğunu devreder. Dokümanlardan (bkz: PolicyConfiguration.addToRoleyöntem ):

Bir role eklenen tüm izinlerin "role eşlenmiş" ilkelere verilmesini sağlamak, Politika sağlayıcısının görevidir.

Başka bir deyişle, her kap için kendiniz JACC sağlayıcınızın içine uygulamanız gerekir. Örneğin, JBoss için, alt sınıflarından birini kullanabilirsiniz AbstractRolesMappingProvider.


Bir yana, taşınabilir bir sağlayıcı kapsayıcı rol eşlemesini yok saymayı seçebilir; örneğin, uygulama bir şekilde ( PolicyContextHandlerörneğin, bu amaç için sağlayıcı tarafından özel olarak kaydedilmiş olarak) aksi belirtilmedikçe , herhangi bir yöneticinin aynı adda bir uygulama rolü ima ettiğini varsayabilir . Başka bir sağlayıcı da rol kavramını tamamen göz ardı edebilir (ve böylece konteyner tarafından sağlanan PolicyConfiguration), bunun yerine yalnızca (uygulama tarafından sağlanan) izin verilen ana harita eşlemelerinde (ve bu izinlerin JACC'lerle sınırlı olması gerekmediğinde) göz ardı edebilir.
Uux

Yan not # 2: Java EE 8'den itibaren, 1: 1 grup-rol eşleme yeni varsayılan haline geldi (ancak bizi orada yarıya indiriyor, çünkü roller hala statik olarak açıklanmalı - hiçbir özel JACC sağlayıcısı olmadığı varsayılarak) etkisinde).
Uux
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.