Ограничение безопасности в файле web.xml для пользователей, прошедших проверку подлинности, без членства в ролях

Я в отчаянии, потому что думаю, что должно быть простое решение моей проблемы, но я ищу - безрезультатно.

Я использую пользовательскую область в 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 должен быть способ просто сказать: игнорировать все группы и роли, мне просто нужен аутентифицированный пользователь?

Любая помощь будет оценена по достоинству.


person msaladin    schedule 11.01.2012    source источник


Ответы (1)


Довольно старый, но для тех, кто ищет ответ, вы можете использовать имя роли *:

<auth-constraint>
    <role-name>*</role-name>
</auth-constraint>

Этому парню удалось решить эту проблему.

person Will    schedule 06.03.2013
comment
Работает на WF10.1.0. Не забудьте также установить в ‹security-role/› ‹role-name›*‹/role-name› (иначе, если * стоит только в ‹auth-constraint/›, это не работает). - person Xavier Portebois; 21.04.2017