Як постачальник JACC може використовувати засоби картографування основної ролі на сервері, на якому він розгорнутий?


154

Я пишу JACCпровайдера.

Попутно це означає реалізацію а PolicyConfiguration.

Комісія PolicyConfigurationвідповідає за прийняття інформації про конфігурацію від сервера додатків, наприклад, дозволів, які належать до яких ролей. Це так, що Policyзгодом може приймати рішення про авторизацію, коли передає інформацію про поточного користувача та те, що він намагається зробити.

Однак, це не є частиною PolicyConfigurationросійського (жорстокого) договору підтримувати відображення між ролями та їхніми дозволами, Principalsякі присвоюються цим ролям.

Зазвичай - завжди, справді - сервер додатків розміщує це відображення. Наприклад, на Glassfish, ви впливаєте це відображення, поставляючи такі речі , як sun-web.xmlі sun-ejb-jar.xmlі так далі з модулями Java EE. (Ці файли, що відносяться до постачальника, відповідають за вимову, наприклад, superusersце група, якій слід призначити роль програми admins.)

Я хотів би повторно використовувати функціонал, який надають ці файли, і я хотів би зробити це для якомога ширшого масиву серверів прикладних програм.

Ось - абсолютно довільно - прийняття цього питання IBM, що, як видається, підтверджує мою підозру, що те, що я хочу зробити, по суті неможливо . (Більше боєприпасів на мій випадок, що цей конкретний договір Java EE не вартий паперу, на якому він надрукований.)

Моє запитання: як мені отримати інформацію про те, як головне на ролі, - для початку - Glassfish та JBoss зсередини PolicyConfiguration? Якщо є стандартний спосіб зробити це, про який я не знаю, я все вухо.


7
Ви просунулися в цьому питанні? Я також хотів би написати постачальника JACC, а також постачальника автентифікації JASPIC для створення портативних веб-додатків ...
perissf

Це також не дуже перспективно: Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.Дивіться docs.oracle.com/cd/E24329_01/web.1211/e24485/…
Arjan Tijms

2
На даний момент я вважаю, що ви завжди повинні переконатися, що ваш постачальник послуг JACC з'єднаний з постачальником JASPIC, що ви також зобов'язані написати. Я ще не пройшов цей маршрут, але це на моєму столі, щоб спробувати.
Laird Nelson

@LairdNelson, якщо у вас є час, ви, ймовірно, повинні написати відповідь навколо свого коментаря JASPIC. Це звучить багатообіцяюче, і в цьому питанні є нагорода на 300 репутації.
jimhark

5
Привіт; не намагаючись утримати когось у напрузі. :-) У мене немає відповіді на те, що я міг би поспішати. Я просто пригадую, як Рон Монзілло радив мені, що єдиний спосіб отримати завдання «основна роль» «перейти» на провайдера JACC таким чином, щоб він міг зрозуміти, - це ефективно приєднати реалізацію JASPIC.
Laird Nelson

Відповіді:


3

Коротка відповідь: немає стандартного способу зробити це.

Хоча Glassfish та JBoss підтримують відображення основних принципів на роль, JACC не передбачає, що всі контейнери роблять, і тому він делегує відповідальність за збереження цих відображень для реалізації постачальника JACC. З Документів (див. PolicyConfiguration.addToRoleМетод ):

Завдання постачальника політики - гарантувати, що всі дозволи, додані до ролі, надаються керівникам, "зіставленим на роль".

Іншими словами, вам потрібно реалізувати це самостійно у своєму постачальнику JACC для кожного контейнера. Наприклад, для JBoss ви можете використовувати один з підкласів AbstractRolesMappingProvider.


В сторону портативний постачальник може обрати ігнорувати відображення ролі контейнера; Наприклад, можна припустити, що будь-яка основна особа передбачає однойменну роль програми, за винятком випадків, коли заявка якось (наприклад, PolicyContextHandlerспеціально зареєстрована постачальником для цієї мети, наприклад) не інше. Інший постачальник також може взагалі не враховувати поняття ролей (і, отже, наданих контейнерів PolicyConfiguration), замість цього функціонувати виключно на (надається додатком) відображення основного дозволу (і там, де ці дозволи не повинні обмежуватися такими, що є JACC).
Uux

Побічна примітка №2: На Java Java EE 8, 1: 1 відображення групових ролей стало новим за замовчуванням (що, однак, отримує нас лише на півдорозі, оскільки ролі все ще повинні бути статично оголошені вперед - якщо припустити, що жоден користувальницький постачальник JACC не є в ефекті).
Uux
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.