使用基本的tomcat身份验证

时间:2012-09-25 07:00:07

标签: tomcat authentication

我有一个小应用程序,我需要实现tomcat身份验证。在挖掘互联网之后,我发现Realm就是解决方案。我还得到了如何配置我的tomcat-users.xml,server.xml和web.xml。 但它仍然无效。

我在web.xml中添加了这段代码

<security-constraint>
    <web-resource-collection>
    <web-resource-name>hp</web-resource-name>
    <url-pattern>/pages/bill.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
    <role-name>Admin</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
     <auth-method>BASIC</auth-method>>
     <realm-name>default</realm-name>>
 </login-config>

在login-config,我得到的元素'login-config'不能有字符[children],因为类型的内容类型  仅限元素。 可能是什么问题?

3 个答案:

答案 0 :(得分:4)

您的XML无效 - 您有两个“&gt;”字符

更正

中的数据结尾
<login-config>
     <auth-method>BASIC</auth-method>>
     <realm-name>default</realm-name>>
 </login-config>

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

我不确定tomcat会为你的无效xml提供什么错误,但它当然不能正常工作。

答案 1 :(得分:3)

这个问题可能已经在这个网站的其他地方得到了回答。但这里有一些帮助。

  1. 不要使用BASIC(也不是DIGEST)身份验证,请使用FORM身份验证。这就是原因:How to force Jetty to ask for credentials with BASIC authentication after invalidating the session?

  2. 您可能首先要从(Form authentication&amp;)Memory Realm开始(也就是说,在tomcat-users.xml中定义了uers&amp;角色),然后可能会使用JDBC领域,&amp;最后是DatasourceRealm。

  3. 阅读Tomcat documentation,了解这首爵士乐是如何运作的。

    我写了一些关于这个主题的注释(认证方法和领域),看看,应该比下面的tomcat文档更容易。 https://sites.google.com/site/adrienitnotes/java/web-apps-login-system-in-tomcat-container

    • 警告:您将从内存领域开始,在Eclipse中运行Tomcat时要小心(tomcat-user.xml配置更改问题):

    创建新服务器时,会将一组配置文件从Tomcat安装导入(复制)到工作区中Servers项目下的相应文件夹中。有时这个文件不会被eclipse更新,因此您的更改将被忽略。

    解决方案1:建议通过手动在Tomcat中部署.war文件来运行此类应用程序(在Eclipse外部运行Tomcat)。

    解决方案2:在localhost-config \ tomcat-users.xml中修改\ Servers \ Tomcat v7.0服务器,并进行相关更改 可能 修复此问题。

答案 2 :(得分:1)

我碰巧偶然发现了这个老问题,很久以前你可能已经解决了这个问题,但我认为无论如何我都可以提供答案。

></auth-method>之后您有额外的</realm-name>个字符。删除它们应该可以解决问题。