защищенное паролем приложение в Tomcat

Я разрабатываю веб-приложение, используя (JSP + Servlet), и я использовал Tomcat 7.0.33 как web container.

Поэтому я требую, чтобы каждое приложение в Tomcat было password защищено, как manager application в Tomcat.

Пока что я сделал следующее:

server.xml

<Realm className="org.apache.catalina.realm.MemoryRealm" />

tomcat-users.xml

<tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="manager-gui"/>
    <role rolename="role1" />

    <user username="tomcat" password="tomcat" roles="role1,tomcat,manager-gui"/>
    <user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>

web.xml

<security-role>
    <role-name>role1</role-name>
</security-role>
<security-role>
    <role-name>tomcat</role-name>
</security-role>

<security-constraint>
<web-resource-collection>
    <web-resource-name>webappname</web-resource-name>
    <url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
    <role-name>role1</role-name>
    <role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>webappname</realm-name>
</login-config>

Он отлично работает, когда кто-либо открывает приложение по пути приложения (он запрашивает имя пользователя и пароль, а приложение принимает либо role1, либо tomcat для аутентификации).

Но проблема в том, что если я вхожу в систему как пользователь tomcat, у которого есть все роли, и когда отображается экран менеджера, на котором перечислены все приложения, развернутые на сервере, то, если я попытаюсь открыть mywebapplication, он снова запросит имя пользователя и пароль.

Мой вопрос в том, что если я назначил все roles пользователю tomcat, то почему он запрашивает пароль, если у меня есть логин как tomcat? есть ли способ избежать этого?

Заранее спасибо.


person Bhushan    schedule 25.03.2013    source источник


Ответы (1)


<login-config>
<auth-method>BASIC</auth-method>
<realm-name>webappname</realm-name>
</login-config>

Базовые учетные данные для аутентификации организованы в «Области безопасности». Если вы дадите всем своим приложениям разные Realm-Name, браузер будет запрашивать каждое из них. Попробуйте использовать для них одно и то же имя (если вы этого хотите).

person Thilo    schedule 25.03.2013