Ограничение безопасности в web.xml для аутентифицированных пользователей без членства в ролях - PullRequest
11 голосов
/ 11 января 2012

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

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

Буду признателен за любую помощь.

1 Ответ

19 голосов
/ 06 марта 2013

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

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

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

...