【问题标题】:Container vs Servlet Authentication容器与 Servlet 身份验证
【发布时间】:2015-01-07 11:22:25
【问题描述】:

我正在使用 Servlet 和 JPA 创建一个 Web 应用程序。我有一个存储用户名、密码和角色的用户表。我想为这些用户创建登录和用户注册功能,以便某些用户可以访问我的一些内容。 当我准备好通过 Servlet 规范和我使用的容器 Tomcat 时,我遇到了两种定义系统用户和角色的方法。

Tomcat 规范建议我可以使用 Realms 绑定到另一个数据库,以便我可以根据需要选择使用 SSO。 Servlet 有自己的使用 web.xml 定义用户和角色的方式,例如基本身份验证,Servlet 容器也是如此,使用 Realms。

但是在 Servlet 和 Container 中创建用户和角色似乎是系统管理员会做的事情。我正在寻找的是自我注册。

上面的这个问题突出了我对这些方法的困惑,我不知道我想要继续的方式是否正确或安全? 有人可以解释这些身份验证方法之间的区别吗? 为什么选择一个而不是另一个? 对于 J2E 模型,我计划使用自我注册是一个坏主意还是不安全?

【问题讨论】:

    标签: java jsp tomcat servlets


    【解决方案1】:

    如果您将用户 ID、密码和角色存储在数据库中,并根据这些验证用户输入,那么此后您就只能靠自己了。这意味着,稍后当您可能想要限制对一组特定用户角色的特定内容的访问时,您将必须针对用户查找存储在数据库表中的角色并编写允许/限制用户的代码.

    但是,如果您将用户“推送”到底层容器,那么容器可以代表应用程序执行大部分工作(即有关领域和角色等的内容)。了解这一点的一个很好的起点是阅读JAAS上的教程

    【讨论】:

      【解决方案2】:

      我认为您对用户和角色感到困惑。在您的 web.xml 中,您必须将角色与资源相关联,例如“对 /admin 的所有请求都应具有管理员角色”,然后,您在管理工具下创建用户并为该用户分配适当的角色。

      【讨论】:

        猜你喜欢
        • 2015-04-01
        • 1970-01-01
        • 2015-04-29
        • 1970-01-01
        • 2012-03-15
        • 2016-04-12
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多