我正在使用(JSP + Servlet)开发Web应用程序,我使用Tomcat 7.0.33
作为web container
。
所以我的要求是tomcat中的每个应用程序都将被password
保护,就像tomcat中的manager application
受到保护一样。
到目前为止,我已经做了以下事情:
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
登录,并且当显示管理器屏幕列出服务器上部署的所有应用程序时,如果我尝试打开{ {1}}然后再次要求输入用户名和密码。
我的问题是,如果我已将所有mywebapplication
分配给用户roles
,那么如果我以tomcat
登录,为什么要求输入密码?有什么方法可以避免这种情况吗?
提前致谢。
答案 0 :(得分:3)
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>webappname</realm-name>
</login-config>
基本身份验证凭据在“安全领域”中进行组织。如果您为所有应用程序提供不同的Realm-Names,浏览器将提示每个应用程序。尝试为所有这些使用相同的名称(如果这是你想要的)。