Конфигурация безопасности для Tomcat с использованием виртуальных хостов и псевдонимов - PullRequest
0 голосов
/ 05 августа 2010

У нас есть приложение grails, которое использует два доменных имени, и Tomcat был настроен на использование виртуальных хостов и псевдонимов.Вот фрагмент server.xml:

<Host name="domain1.com"  appBase="myApp"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Alias>domain2.com</Alias>
</Host>

Мы также хотели ограничить доступ к веб-приложению (отличается от логинов для использования сайта), поэтому мы использовали защиту Tomcat.

Вот то, что фрагмент ограничения безопасности в приложении web.xml:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>HTMLManger and Manager command</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <!-- NOTE:  This role is not present in the default users file -->
       <role-name>manager</role-name>
    </auth-constraint>
 </security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>My Realm</realm-name>
</login-config>

<!-- Security roles referenced by this web application -->
<security-role>
    <description>
      The role that is required to log in to the Manager Application
    </description>
    <role-name>manager</role-name>
</security-role>

<error-page>
    <error-code>401</error-code>
    <location>/401.jsp</location>
</error-page>

Так вот сценарий: когда пользователь заходит на domain1.com, будет отображаться всплывающее окно базовой аутентификации.Затем пользователь вводит комбинацию имени пользователя и пароля для входа на сайт.Затем пользователь желает войти в веб-приложение (чтобы иметь возможность использовать больше функций).Механизм входа в систему (с использованием acegi) также необходимо войти на domain2.com.Теперь, прежде чем пользователь сможет войти на domain2.com, ему необходимо ввести те же учетные данные для основного всплывающего окна аутентификации.Таким образом, в основном, пользователю необходимо использовать веб-безопасность tomcat дважды, чего нам следует избегать.

Вопрос также заключается в том, что, поскольку это одно и то же веб-приложение, зачем ему дважды входить в систему?Это потому, что веб-безопасность tomcat основана на домене?Так что, даже если другой домен является просто псевдонимом исходного домена?

Спасибо!

1 Ответ

1 голос
/ 05 августа 2010

Я думаю, что проблема в том, что аутентификация основана на сеансах и сеансах на доменах.Если у вас есть двухуровневая система аутентификации, вы должны рассмотреть возможность использования единого входа в систему, например CAS.Как устаревший плагин Acegi, так и новый Spring Security Plugin для Grails имеют поддержку CAS.В сценарии интернет-сайта OpenID также может быть простым и дешевым (бесплатным) вариантом.Одноуровневая система аутентификации с более тонким ролевым моделированием может быть и опцией

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