在 Glassfish 中管理用户角色

在 Glassfish 中管理用户角色

我正在开发一个小型 Web 应用程序用于学习。我想使用控制器 servlet 来重定向用户的请求并控制它们。为此,我在 web.xml 中执行以下映射:

 <servlet>
    <servlet-name>ServletController</servlet-name>
    <servlet-class>servlet.ServletController</servlet-class>
 </servlet>
 <servlet>
    <servlet-name>IndexJSP</servlet-name>
    <jsp-file>/index.jsp</jsp-file>
 </servlet>
 <servlet-mapping>
    <servlet-name>ServletController</servlet-name>
    <url-pattern>/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
    <servlet-name>IndexJSP</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
 </servlet-mapping>

然后我需要允许我的控制器访问其他 jsp,以将用户重定向到不同的页面。在 Bruce W. Perry 的书中,作者建议以这种方式将 security-constrain 添加到 web.xml 中:

<security-constraint>
    <display-name>ConstraintIndex</display-name>
    <web-resource-collection>
        <web-resource-name>IndexJSP</web-resource-name>
        <description>Main page</description>
        <url-pattern>/index.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>nullrole</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <role-name>nullrole</role-name>
</security-role>

“Nullrole” 是任何用户都不拥有的角色。它似乎工作正常:当用户尝试访问 index.jsp 时,系统会要求他输入登录名/密码,但控制器可以自由访问。尽管如此,我不明白当用户在浏览器中直接输入“index.jsp”时,在身份验证窗口中可以使用什么登录名和密码。正如我所看到的,Glassfish 中没有角色:有“file”和“admin-realm”等领域。所以,也没有“Nullrole”。有人能解释一下如何向 Glassfish 添加空角色以及如何使用它来限制任何人从浏览器直接访问页面吗?

答案1

我不完全理解你的问题,但如果你问如何添加更多角色并将它们映射到用户,这将回答你的问题:角色映射 JavaEE 安全模块

角色可以分配给多个用户或组。您可以使用角色来限制对页面的访问。

如果您想设置从哪里获取用户,您必须在 web.xml 中添加如下内容:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>siteSecurity</realm-name>
    <form-login-config>
        <form-login-page>/pages/login.jsp</form-login-page>
        <form-error-page>/pages/login.jsp?retry=true</form-error-page>
    </form-login-config>
</login-config>

您必须在 glassfish 中添加您的 siteSecurity 领域。

有关如何执行此操作的有用链接:如何创建领域

相关内容