2015-03-24 4 views
11

Буду честным. Я был разработчиком уже довольно давно, но в первый раз я слышал о JACC и JASPIC. Я понимаю, что они являются стандартами, используемыми поставщиками авторизации, но как именно они отличаются от JAAS? и когда мы будем использовать один над другим?Проще говоря, может ли кто-нибудь объяснить мне разницу между JAAS, JACC и JASPIC?

Я провел некоторое начальное исследование, но не то, чтобы я ленился сделать это. Его просто то, что чтение статей о JACC и JASPIC меня немного переполнило, и мне нужно узнать об этом за короткое время, потому что мне нужно реализовать это в одном из моих предстоящих проектов. Просто хочу начать прыжок с моего понимания.

ответ

20

JAAS включен в Java SE и в основном полезен для Java SE. Речь идет о безопасности кода (доверяешь ли вы код).

Это не очень полезно для Java EE, что касается безопасности на уровне пользователя (доверяют пользователю).

Некоторые серверы Java EE могут использовать что-то, основанное на JAAS LoginModules для аутентификации, но это использование JAAS является нестандартным и чрезвычайно неглубоким по сравнению с тем, что оно делает в Java SE. По той или иной причине из-за этого люди считают, что безопасность в Java EE называется JAAS, но это совершенно наоборот.

JASPIC - это точка расширения, на которой серверы Java EE 6+ должны создавать и подключать дополнительные механизмы аутентификации. Вы можете использовать это для создания таких вещей, как механизмы OAuth, OpenID и т. Д. JASPIC о взаимодействии с вашим пользователем. Он ничего не говорит о получении пользовательских данных из таких вещей, как LDAP или база данных. Вы можете сделать это со своим собственным кодом или вызовом JMAS LoginModule. JASPIC определяет, как JAAS LoginModules может быть подключен к вашему пользовательскому механизму более стандартным образом. Жаль, что это не стандарт на 100%, но, по крайней мере, лучше.

JACC - еще одна точка расширения, но для механизмов авторизации. Вы можете использовать его для авторизации по-другому или просто для проверки авторизации. JACC также предоставляет все ограничения безопасности, определенные вами в web.xml для вашего кода. Вы можете использовать это для проверки заранее, если у пользователя будет доступ к странице. В отличие от JASPIC, JACC очень сложно активировать в вашем приложении. Вам нужно возиться с аргументами JVM и т. Д.

+0

Спасибо за ответ. –

+0

Очень ценится - это было прямо к делу! Я использую JBoss, который поставляется с JACC из коробки, который должен получить авторизацию. Но как насчет аутентификации? Должен ли я использовать JAAS LoginModules для аутентификации или что-то еще? Благодаря! –

+1

@MatthewCachia «javax.security.auth.message.module.ServerAuthModule' (SAM) - это все, что вам нужно реализовать в отношении переносимой проверки подлинности. Однако, если вы также намерены интегрировать свой SAM с JBoss переносимым образом, вам также придется реализовать «AuthConfigProvider» (плюс «ServletContextInitializer», служащий в качестве регистратора прежнего с предоставленным контейнером «AuthConfigFactory»), ' ServerAuthConfig' и 'ServerAuthContext'. Для распространенного варианта использования одного SAM, защищающего одно приложение, это относительно безболезненно для автора. – Uux