Я в отчаянии, потому что думаю, что должно быть простое решение моей проблемы, но я ищу - безрезультатно.
Я использую пользовательскую область в Glassfish 3.1.1. Эта настраиваемая область (реализующая AppservPasswordLoginModuleInterface) берет маркер безопасности из HTTPS-запроса, проверяет маркер безопасности и затем возвращает пользователя в Glassfish.
Проблема в том, что токен безопасности не содержит никаких групп, а это означает, что метод public String[] getGroupsList() или custom realm возвращает пустой список (правильно, потому что в токене безопасности нет ролей).
Тем не менее, я хотел бы иметь ограничение безопасности, чтобы только проверенные пользователи могли войти в систему. Я знаю, что могу использовать следующее ограничение в 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 должен быть способ просто сказать: игнорировать все группы и роли, мне просто нужен аутентифицированный пользователь?
Любая помощь будет оценена по достоинству.