我正在开发使用(JSP + Servlet的)的Web应用程序,我已经使用Tomcat 7.0.33的web container。
Tomcat 7.0.33
web container
因此,我的要求是要password像manager application保护tomcat中一样保护tomcat中的每个应用程序。
password
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进行身份验证),它可以正常工作。
role1
tomcat
但是问题在于,假设我以tomcat拥有所有角色的用户身份登录,并且在显示管理器屏幕(其中列出了服务器上部署的所有应用程序)时,如果我尝试打开mywebapplication然后再次询问用户名和密码。
mywebapplication
我的问题是,如果我将所有roles权限都分配给了用户,tomcat那么如果我以身份登录,为什么它要求输入密码tomcat?有什么办法可以避免这种情况?
roles
提前致谢。
<login-config> <auth-method>BASIC</auth-method> <realm-name>webappname</realm-name> </login-config>
基本身份验证凭据在“安全领域”中进行组织。如果为所有应用程序提供不同的领域名称,浏览器将提示您输入每个领域。尝试对所有名称使用相同的名称(如果您要使用此名称)。