Web APplication的容器管理安全性

jav*_*eek 5 java security web-applications java-ee

我对Container托管安全性完全不熟悉,需要一些帮助才能在我的Web应用程序中进行配置.

我想在我的Web应用程序中限制对jsp的访问.这就是我在web.xml中配置安全性的方法

<security-constraint>
    <display-name>PrivilegedConstraint</display-name>
    <web-resource-collection>
        <web-resource-name>JSP Files</web-resource-name>
        <description>All the jsp files in the web application</description>
        <url-pattern>*.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>PrivilegedRole</role-name>
    </auth-constraint>
    <user-data-constraint>
        <description/>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>BasicRealm</realm-name>
</login-config>
<security-role>
    <description>This is a privileged role. Has access to everything in the web app</description>
    <role-name>PrivilegedRole</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

login-config元素中realm-name的用途是什么?我在哪里配置用户名,密码并将用户映射到角色?

当我尝试访问我的Web应用程序中的jsp时,我会被要求输入用户名和密码.我在那里放什么?这种安全机制如何运作?

我对安全性完全陌生,所以如果有人能指出一篇很好的文章来解释配置安全性的基础知识及其实际工作方式,我将不胜感激.

McD*_*ell 4

问:“login-config 元素中的领域名称的用途是什么?”

来自Java EE 6 教程

领域是为 Web 或应用程序服务器定义的安全策略域领域包含用户的集合,这些用户可能会也可能不会分配到某个组。

当前Servlet 3.0 规范中定义的行为:

HTTP 基本身份验证基于用户名和密码,是 HTTP/1.0 规范中定义的身份验证机制。Web 服务器请求 Web 客户端对用户进行身份验证。作为请求的一部分,Web 服务器会传递要在其中对用户进行身份验证的领域(字符串)。Web客户端从用户处获取用户名和密码并将其传输到Web服务器。然后,Web 服务器对指定领域中的用户进行身份验证。


问:“在哪里配置用户名、密码并将用户映射到角色?”

这是容器特定的。也就是说,每个服务器供应商可以自由定义如何定义用户/组以及如何配置此信息。通常有不止一种方法可以做到这一点。

用户和组通常在目录中定义。然后将服务器配置为使用此目录,管理员将在部署时映射应用程序角色。

开发者 Tomcat 测试服务器可能使用平面文件;生产WebSphere 服务器可能通过LDAP 连接到公司的Exchange 目录。

有关更多信息,请参阅您的服务器文档。


您可能会做得比使用Netbeans 和 Glassfish 的Oracle Java EE 6教程更糟糕,但请注意特定于该供应商产品的步骤。