Предоставить публичный доступ к одному сервлету GAE, но использовать аутентификацию для всех других ресурсов? - PullRequest
1 голос
/ 13 января 2010

для веб-приложения с отчетом об ошибках в Интернете, мне нужно найти способ, как любой пользователь может отправить отчет об ошибке (с помощью HTTP POST) сервлету в приложении Google App Engine, в то время как все другие сервлеты (интерфейс администратора приложения) защищены так, что они предоставляют доступ только тем пользователям, которые вошли в систему с помощью своей учетной записи Google . Приложение работает в / *, и если этот URL-адрес защищен с использованием учетных записей Google, сервлет не будет доступен без аутентификации, и, похоже, нет способа исключить URL-адрес из аутентификации.

Так что это должно быть защищено:

<url-pattern>/*</url-pattern>

Пока это должно быть публично:

<url-pattern>/addbugreport</url-pattern>
  • просто идея для обходного пути: все сервлеты в приложении (кроме общедоступного) могут проверить, вошел ли пользователь в систему (и перенаправить ли на страницу входа, если не вошли)

Ответы [ 2 ]

1 голос
/ 17 января 2010

Если URL-шаблоны важнее декларативной безопасности; реализовать проверку пользователя как сервлет Filter (сопоставленный с '/*'). Это будет чистым способом отделять безопасность от логики обработки запросов.

1 голос
/ 16 января 2010

Поместите защищенные ресурсы в другой контекст (каталог) из общедоступного (используя servlet-mapping в web.xml). Если публичные ресурсы находятся в '/', поместите защищенный в '/admin' и определите security-contraint (также в web.xml) только для этого контекста.

<security-constraint>
  <web-resource-collection>
    <web-resource-name>admin resources</web-resource-name>
    <url-pattern>/admin/*</url-pattern>
    <http-method>*</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>

Если вы добавляете больше защищенных контекстов в приложение, вам также необходимо определить ограничения безопасности для них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...