Проще говоря, может ли кто-нибудь объяснить мне разницу между JAAS, JACC и JASPIC?

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

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

Ответ 1

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 и т.д.