Я в отчаянии, потому что я думаю, что должно быть простое решение моей проблемы, но я ищу - безрезультатно.
Я использую пользовательское Царство в Glassfish 3.1.1. Эта пользовательская область (реализующая AppservPasswordLoginModuleInterface) берет токен безопасности из запроса HTTPS, проверяет токен безопасности и затем возвращает пользователя в Glassfish.
Проблема в том, что маркер безопасности не содержит никаких групп, что означает, что метод public String [] getGroupsList () или пользовательская область возвращает пустой список (правильно, потому что в токене безопасности нет ролей).
Тем не менее, я хотел бы иметь ограничение безопасности, в которое могут войти только проверенные пользователи. Я знаю, что могу использовать следующее ограничение в файле web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>mywebapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Users</role-name>
</auth-constraint>
</security-constraint>
Но поскольку у меня нет каких-либо групп, я не могу сопоставить какие-либо группы ролям, и поэтому я не могу использовать ограничение авторизации с именем роли.
Есть ли способ в web.xml определить, что разрешены только аутентифицированные пользователи, игнорируя, в какой роли они находятся, и игнорируя, играют ли они вообще какую-либо роль.
Есть пара решений, которые я не могу реализовать:
- Я не могу изменить базовый LDAP для включения ролей, поскольку схема LDAP и способ сопоставления пользователей LDAP с маркерами безопасности выводят нас за пределы области действия.
- Мне нужно использовать текущий обработчик пользовательских областей, я не могу заменить его на свой собственный, который просто возвращает группу по умолчанию. Я попробовал это однажды, и это сработало. Но я не могу заменить существующую пользовательскую область своей собственной, потому что пользовательская область должна быть общей.
Но я действительно думаю, что в web.xml должен быть способ просто сказать: игнорировать все группы и роли, я просто хочу аутентифицированного пользователя?
Буду признателен за любую помощь.