Я разрабатываю веб-приложение, используя (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
? есть ли способ избежать этого?
Заранее спасибо.