在 NetBeans IDE 中保护 Web 应用程序的安全

本文档介绍在部署到 Oracle GlassFish Open Source Edition、Oracle WebLogic 或 Apache Tomcat 服务器的 Web 应用程序中添加安全功能的基础知识。

本文档介绍了如何使用基本登录窗口以及 Web 页中的登录窗体配置安全验证。本文档还将指导您完成在 Tomcat 和 GlassFish Server 上创建用户的步骤。创建用户之后,然后可以通过在部署描述符中设置安全属性创建安全角色。本文档还介绍了在将应用程序部署到 GlassFish Server 时,如何使用 JDBC 验证来保护应用程序的安全。

预计时间:40 分钟

目录

此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0

要学习本教程,您需要具备以下软件和资源。

软件或资源 要求的版本
NetBeans IDE Java EE 版本
Java 开发者工具包 (JDK) 版本 7 或 8
Java EE 平台 Java EE 6 或 7
Travel 数据库 无版本要求
符合 Java EE 规范的 Web 服务器或应用服务器 Tomcat Web 服务器 7.x 或 8.x、Oracle WebLogic 11g 或
GlassFish Server Open Source Edition 4.x

安装和配置工作环境

安装并启动 NetBeans IDE。可以使用捆绑的 Tomcat 服务器或 GlassFish Server 完成本教程。

确保已安装服务器,并已在 IDE 中注册服务器实例。可以使用服务器管理器来注册已安装的服务器实例。(选择 "Tools"(工具)> "Servers"(服务器)> "Add Server"(添加服务器)。选择 "GlassFish Server <version number>"(GlassFish Server <版本号>)或 "Tomcat <version number>"(Tomcat <版本号>),然后单击 "Next"(下一步)。单击 "Browse"(浏览)并找到该应用服务器的安装目录。单击 "Finish"(完成)。

创建 Web 应用程序

在本练习中,您首先将创建 Web 应用程序项目和目录结构。然后在每个安全目录中创建一些简单的 html 文件。Web 应用程序使用基本登录验证来访问安全目录。如果希望使用登录窗体进行验证,则可以向窗体添加 jsp 页。

创建安全目录

  1. 选择 "File"(文件)> "New Project"(新建项目)(Ctrl-Shift-N 组合键),从 Java Web 类别中选择 "Web Application"(Web 应用程序),然后单击 "Next"(下一步)。
  2. 将项目命名为 WebApplicationSecurity。接受默认设置。
  3. (可选)选中“使用专用文件夹存储库”复选框,并指定库文件夹的位置。有关此选项的详细信息,请参见使用 NetBeans IDE 开发应用程序中的与其他用户共享库
  4. 单击 "Next"(下一步)。
  5. 选择要在其中部署应用程序的服务器。这里仅列出了已在 IDE 中注册的服务器。单击 "Next"(下一步)。
  6. 不需要添加框架,因此请单击 "Finish"(完成)。
  7. 如果创建了一个 EE 6 应用程序,请转到 IDE 的 "Projects"(项目)窗口,右键单击该项目的节点,然后选择 "New"(新建)> "Other"(其他)> "Web" > "Standard Deployment Descriptor (web.xml)"(标准部署描述符 (web.xml))。接受所有默认值,然后单击相应的按钮以完成向导。

    注:本教程介绍了如何在部署描述符中配置安全功能,但 EE 6 和 EE 7 应用程序默认使用标注,而不是部署描述符。

  8. 如果使用 GlassFish 或 WebLogic Server 以及 NetBeans IDE 7.0.1 或更高版本,则需生成特定于服务器的描述符。右键单击项目的节点并选择 "New"(新建)> "Other"(其他)> "GlassFish" > "GlassFish Descriptor"(GlassFish 描述符),或选择 "New"(新建)> "Other"(其他)> "WebLogic" > "WebLogic Descriptor"(WebLogic 描述符)。"Create Server-Specific Descriptor"(创建特定于服务器的描述符)对话框将会打开。接受所有默认值,然后单击 "Finish"(完成)。特定于服务器的描述符(名为 glassfish-web.xmlweblogic.xml)将出现在项目中的 "Configuration Files"(配置文件)文件夹中。
  9. 在 IDE 的 "Projects"(项目)窗口中,右键单击 "Web Pages"(Web 页),然后选择 "New"(新建)> "Other"(其他)。
  10. 在新建文件向导中,选择 "Other"(其他)作为类别,选择 "Folder"(文件夹)作为文件类型。单击 "Next"(下一步)。
  11. 在新建文件夹向导中,将文件夹命名为 "secureAdmin",然后单击 "Finish"(完成)。

    secureAdmin 文件夹将显示在 "Projects"(项目)窗口的 "Web Pages"(Web 页)文件夹中。
  12. 重复前面的 3 个步骤,以创建另一个名为 secureUser 的文件夹。
  13. 在 secureUser 文件夹中创建一个新的 html 文件,方法是在 "Projects"(项目)窗口中右键单击 secureUser 文件夹,然后选择 "New"(新建)> "Other"(其他)。
  14. 在 "Other"(其他)类别中选择 "HTML" 文件类型。单击 "Next"(下一步)。
  15. 将新文件命名为 "pageU",然后单击 "Finish"(完成)。

    单击 "Finish"(完成),此时将在源代码编辑器中打开 pageU.html 文件。

  16. 在源代码编辑器中,将 pageU.html 中的现有代码替换为以下代码。
    <html>
       <head>
          <title>User secure area</title>
       </head>
       <body>
          <h1>User Secure Area</h1>
       </body>
    </html>
  17. 右键单击 secureAdmin 文件夹并创建一个新的名为 pageA 的 html 文件。
  18. 在源代码编辑器中,将 pageA.html 中的现有代码替换为以下代码。
    <html>
       <head>
          <title>Admin secure area</title>
       </head>
       <body>
          <h1>Admin secure area</h1>
       </body>
    </html>

创建 JSP 索引页

现在可以创建包含指向安全区域的链接的 JSP 索引页。当用户单击链接时,系统将提示他们输入用户名和口令。如果使用的是基本登录,将使用默认浏览器登录窗口进行提示。如果使用的是登录窗体页,则用户将在一个窗体中输入用户名和口令。

  1. 在源代码编辑器中打开 index.jsp,并将以下链接添加到 pageA.htmlpageU.html
    <p>Request a secure Admin page <a href="secureAdmin/pageA.html">here!</a></p>
    <p>Request a secure User page <a href="secureUser/pageU.html" >here!</a></p>
  2. 保存所做的更改。

创建“登录窗体”(对 Tomcat 为必选,对 GlassFish 或 WebLogic Server 为可选)

如果希望使用登录窗体而不使用基本登录,则可以创建一个包含窗体的 jsp 页。然后在配置登录方法时指定登录页和错误页。

重要说明:Tomcat 用户必须创建一个登录窗体。

  1. 在 "Projects"(项目)窗口中,右键单击 "Web Pages"(Web 页)文件夹并选择 "New"(新建)> "JSP"。
  2. 将文件命名为 login,保留其他字段的默认值,然后单击 "Finish"(完成)。
  3. 在源代码编辑器中,将以下代码插入到 login.jsp<body> 标记之间。
    <form action="j_security_check" method="POST">
       Username:<input type="text" name="j_username"><br>
       Password:<input type="password" name="j_password">
       <input type="submit" value="Login">
    </form>
  4. 在 "Web Pages"(Web 页)文件夹中创建一个新的名为 loginError.htmlhtml 文件。这是一个简单的错误页。
  5. 在源代码编辑器中,将 loginError.html 中的现有代码替换为以下代码。
    <html>
        <head>
            <title>Login Test: Error logging in</title>
        </head>
        <body>
            <h1>Error Logging In</h1>
            <br/>
        </body>
    </html>

在目标服务器上创建用户

要能够在 Web 应用程序中使用用户/口令验证(基本登录或基于窗体的登录)安全功能,必须为目标服务器定义用户及其相应角色。要登录到服务器,该服务器上必须存在用户帐户。

定义用户和角色的方式因指定的目标服务器而异。在本教程中,用户 adminuser 用于测试安全设置。您需要确认在相应的服务器上存在这些用户,并为这些用户指定了相应的角色。

在 GlassFish Server 上定义用户

对于本方案,需要使用 GlassFish Server 的管理控制台创建两个分别名为 useradmin 的新用户。名为 user 的用户对应用程序具有有限的访问权限,名为 admin 的用户具有管理权限。

  1. 通过转至 IDE 的 "Services"(服务)窗口并右键单击 "Servers"(服务器)> "GlassFish Server" > "View Domain Admin Console"(查看域管理控制台)打开 "Admin Console"(管理控制台)。GlassFish Server 的登录页将在浏览器窗口中打开。您需要使用管理员用户名和口令进行登录才能访问管理控制台。

    注:必须运行应用服务器才能访问管理控制台。要启动服务器,请右键单击 GlassFish Server 节点并选择 "Start"(启动)。

  2. 在 "Admin Console"(管理控制台)中,导航至 "Configurations"(配置)> "server-config" > "Security"(安全性)> "Realms"(领域)> "File"(文件)。"Edit Realm"(编辑领域)面板将会打开。
    GlassFish 3.1 管理控制台中服务器配置的文件领域
  3. 单击 "Edit Realm"(编辑领域)面板顶部的 "Manage Users"(管理用户)按钮。将打开 "File Users"(文件用户)面板。
    突出显示 "New user"(新建用户)按钮的 "File Users"(文件用户)面板
  4. 单击 "New"(新建)。将打开 "New File Realm User"(新建文件领域用户)面板。键入 user 作为用户 ID,键入 userpw01 作为口令。单击 "OK"(确定)。
  5. 按照前面的步骤在 file 领域中创建名为 admin、口令为 adminpw1 的用户。

在 Tomcat Web 服务器上定义角色和用户

对于 Tomcat 7,在 NetBeans IDE 中注册服务器时,将创建一个角色为 manager-script 的用户,并为该用户创建一个口令。

Tomcat 服务器的基本用户和角色在 tomcat-users.xml 中。可以在 <CATALINA_BASE>\conf 目录中找到 tomcat-users.xml

注:通过在 "Services"(服务)窗口中右键单击 Tomcat 服务器节点并选择 "Properties"(属性)可以查找 CATALINA_BASE 位置。"Server Properties"(服务器属性)将打开。CATALINA_BASE 的位置在 "Connection"(连接)标签中。

显示用于打开 Tomcat 7.0 属性的上下文菜单的 "Services"(服务)窗口 显示 CATALINA_BASE 位置的 Tomcat 7 "server properties"(服务器属性)对话框

注:如果使用早期版本的 IDE 捆绑的 Tomcat 6,该服务器将定义具有口令以及 administrator 和 manager 角色的 ide 用户。用户 ide 的口令是在安装 Tomcat 6 时生成的。可以更改用户 ide 的口令,或者将该口令复制到 tomcat-users.xml 中。

将用户添加到 Tomcat 中:

  1. 在编辑器中打开 <CATALINA_BASE>/conf/tomcat-users.xml
  2. 添加一个名为 AdminRole 的角色。
    <role rolename="AdminRole"/>
  3. 添加一个名为 UserRole 的角色。
    <role rolename="UserRole"/>
  4. 添加一个名为 admin 并具有 adminpw1 口令和 AdminRole 角色的用户。
    <user username="admin" password="adminpw1" roles="AdminRole"/>
  5. 添加一个名为 user 并具有 userpw01 口令和 UserRole 角色的用户。
    <user username="user" password="userpw01" roles="UserRole"/>

现在,tomcat-users.xml 文件显示如下:

<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
...
<role rolename="AdminRole"/>
<role rolename="UserRole"/>
<user username="user" password="userpw01" roles="UserRole"/>
<user username="admin" password="adminpw1" roles="AdminRole"/>
[User with manager-script role, defined when Tomcat 7 was registered with the IDE]
...
</tomcat-users>

在 WebLogic Server 上定义用户和组

对于本方案,首先需要使用 WebLogic Server 的管理控制台创建两个分别名为 useradmin 的新用户。将这些用户分别添加到 userGroupadminGroup 组中。稍后,将要为这些组指定安全角色。userGroup 将对应用程序具有有限的访问权限,而 adminGroup 将具有管理权限。

WebLogic 管理控制台联机帮助中提供了有关向 Web Logic 服务器添加用户和组的一般说明。

将 "user" 和 "admin" 用户和组添加到 WebLogic 中:

  1. 通过转至 IDE 的 "Services"(服务)窗口并右键单击 "Servers"(服务器)> "WebLogic Server" > "View Admin Console"(查看管理控制台)打开 "Admin Console"(管理控制台)。GlassFish Server 的登录页将在浏览器窗口中打开。您需要使用管理员用户名和口令进行登录才能访问管理控制台。

    注:必须运行应用服务器才能访问管理控制台。要启动服务器,请右键单击 WebLogic Server 节点并选择 "Start"(启动)。

  2. 在左面板中,选择 "Security Realms"(安全领域)。"Summary of Security Realms"(安全领域概要)页将会打开。
  3. 在 "Summary of Security Realms"(安全领域概要)页中,选择领域的名称(默认领域为 "myrealm")。"Settings for Realm Name"(领域名称设置)页将会打开。
  4. 在 "Settings for Realm Name"(领域名称设置)页中,选择 "Users and Groups"(用户和组)> "Users"(用户)。将显示 "Users"(用户)表。
  5. 在 "Users"(用户)表中,单击 "New"(新建)。"Create New User"(创建新用户)页将会打开。
  6. 键入名称 "user" 和口令 "userpw01"。还可以键入说明。接受默认的 "Authentication Provider"(验证提供器)。
    显示 "new user"(新建用户)对话框的 WebLogic 管理控制台
  7. 单击 "OK"(确定)。您将返回到 "Users"(用户)表。
  8. 单击 "New"(新建)并添加一个具有名称 "admin" 和口令 "admin1" 的用户。
  9. 打开 "Groups"(组)标签。将显示 "Groups"(组)表。
  10. 单击 "New"(新建)。"Create a New Group"(创建新组)窗口将会打开。
  11. 将组命名为 userGroup。接受默认提供器并单击 "OK"(确定)。您将返回到 "Groups"(组)表。
  12. 单击 "New"(新建)并创建组 adminGroup。
  13. 为下一过程打开 "Users"(用户)标签。

现在,将 admin 用户添加至 adminGroup,并将 user 用户添加至 userGroup

将用户添加到组中:

  1. 在 "Users"(用户)标签中,单击 admin 用户。用户的 "Settings"(设置)页将会打开。
  2. 在 "Settings"(设置)页中,打开 "Groups"(组)标签。
  3. 在 "Parent Groups: Available:"(父组:可用:)表中,选择 adminGroup
  4. 单击向右箭头 >。adminGroup 将出现在 "Parent Groups: Chosen:"(父组: 选定:)表中。
    显示管理员用户设置的 WebLogic 管理控制台
  5. 单击 "Save"(保存)。
  6. 返回到 "Users"(用户)标签。
  7. 单击 user 用户并将其添加至 userGroup

配置登录方法

在为应用程序配置登录方法时,可以使用浏览器提供的登录窗口进行基本登录验证。另外,还可以创建具有登录窗体的 Web 页。这两种登录配置都是基于用户/口令验证的。

要配置登录,需创建安全约束并为这些安全约束指定角色。安全约束定义一组文件。将角色指定给约束时,拥有该角色的用户可以访问约束定义的文件集。例如,在本教程中,您将 AdminRole 指定给 AdminConstraint,将 UserRole 和 AdminRole 指定给 UserConstraint。这意味着,具有 AdminRole 角色的用户有权访问 Admin 文件和 User 文件,但具有 UserRole 角色的用户只有权访问 User 文件。

注:向单独的管理员角色提供对用户文件的访问权限不是常规用例。替代方法是只将 UserRole 指定给 UserConstraint,并且在服务器端将 AdminRole 赋予也是管理员的特定 *用户*。您应决定如何按用例授予访问权限。

通过配置 web.xml,可以为应用程序配置登录方法。可以在 "Projects"(项目)窗口的 "Configuration Files"(配置文件)目录中找到 web.xml 文件。

基本登录

在使用基本登录配置时,登录窗口由浏览器提供。访问安全内容需要有效的用户名和口令。

以下步骤介绍了如何为 GlassFish 和 WebLogic Server 配置基本登录。Tomcat 用户需要使用窗体登录

配置基本登录:

  1. 在 "Projects"(项目)窗口中,展开项目的 "Configuration Files"(配置文件)节点,然后双击 web.xml。将在可视编辑器中打开 web.xml 文件。
  2. 单击工具栏中的 "Security"(安全),在 "Security"(安全)视图中打开该文件。
  3. 展开 "Login Configuration"(登录配置)节点,然后将 "Login Configuration"(登录配置)设置为 "Basic"(基本)。

    注:如果希望使用窗体,请选择 "Form"(窗体)而不是 "basic"(基本),并指定登录页和登录错误页。

  4. 根据服务器输入领域名称。
    • GlassFish:输入 file 作为领域名称。这是在 GlassFish Server 上创建用户所在的默认领域名称。
    • Tomcat:请勿输入领域名称。
    • WebLogic:输入您的领域名称。默认领域是 myrealm
    将基本登录和角色添加到 web.xml 中
  5. 展开 "Security Roles "(安全角色)节点,然后单击 "Add"(添加)可添加角色名称。
  6. 添加以下安全角色:
    • AdminRole。添加到此角色的用户将有权访问服务器的 secureAdmin 目录。
    • UserRole。添加到此角色的用户将有权访问服务器的 secureUser 目录。

    注:GlassFish 角色名称必须以大写字母开头。

  7. 通过执行以下操作,创建和配置名为 AdminConstraint 的安全约束:
    1. 单击 "Add Security Constraint"(添加安全约束)。将显示新安全约束部分。
    2. 输入 AdminConstraint 作为新安全约束的显示名称。
      添加 AdminConstraint
    3. 单击 "ADD"(添加)。将打开 "Add Web Resource"(增加 Web 资源)对话框。
    4. 在 "Add Web Resource"(增加 Web 资源)对话框中,将 "Resource Name"(资源名称)设置为 Admin,将 "URL Pattern"(URL 模式)设置为 /secureAdmin/*,然后单击 "OK"(确定)。对话框将关闭。

      注:如果使用星号 (*),则会授予用户访问该文件夹中所有文件的权限。

      "Add Web Resource"(增加 Web 资源)对话框
    5. 选中 "Enable Authentication Constraint"(启用验证约束),然后单击 "Edit"(编辑)。"Edit Role Names"(编辑角色名称)对话框将会打开。
    6. 在 "Edit Role Names"(编辑角色名称)对话框中,在左窗格中选择 AdminRole,单击 "Add"(添加),然后单击 "OK"(确定)。

      在完成上述步骤之后,结果应如下图所示:

      管理员和用户约束
  8. 通过执行以下操作,创建和配置名为 UserConstraint 的安全约束:
    1. 单击 "Add Security Constraint"(添加安全约束),创建新的安全约束。
    2. 输入 UserConstraint 作为新安全约束的显示名称。
    3. 单击 "Add"(添加),添加 "Web Resource Collection"(Web 资源集合)。
    4. 在 "Add Web Resource"(增加 Web 资源)对话框中,将 "Resource Name"(资源名称)设置为 User,将 URL 模式设置为 /secureUser/*,然后单击 "OK"(确定)。
    5. 选中 "Enable Authentication Constraint"(启用验证约束),然后单击 "Edit"(编辑)以编辑 "Role Name"(角色名称)字段。
    6. 在 "Edit Role Names"(编辑角色名称)对话框中,在左窗格中选择 AdminRole 和 UserRole,单击 "Add"(添加),然后单击 "OK"(确定)。
    注:还可以在 web.xml 中设置会话的超时时间。要设置超时,请单击可视编辑器的 "General"(常规)标签,然后指定希望会话持续的时间。默认值为 30 分钟。

    窗体登录

    使用窗体进行登录可以定制登录页和错误页的内容。使用窗体配置验证的步骤与基本登录配置相同,但需要指定您创建的登录页和错误页

    以下步骤演示如何配置登录窗体

    1. 在 "Projects"(项目)窗口中,双击位于 Web 页/WEB-INF 目录中的 web.xml,在可视编辑器中打开该文件。
    2. 单击工具栏中的 "Security"(安全),在 "Security"(安全)视图中打开该文件,并展开 "Login Configuration"(登录配置)节点。
    3. 将 "Login Configuration"(登录配置)设置为 "Form"(窗体)。
    4. 通过单击 "Browse"(浏览)并找到 login.jsp 设置“窗体登录页”。
    5. 通过单击 "Browse"(浏览)并找到 loginError.html 设置“窗体错误页”。

      在 web.xml 中设置登录窗体
    6. 根据服务器输入领域名称。
      • GlassFish:输入 file 作为领域名称。这是在 GlassFish Server 上创建用户所在的默认领域名称。
      • Tomcat:请勿输入领域名称。
      • WebLogic:输入您的领域名称。默认领域是 myrealm
    7. 展开 "Security Roles "(安全角色)节点,然后单击 "Add"(添加)可添加角色名称。
    8. 添加以下安全角色:
      服务器角色 描述
      AdminRole 添加到此角色的用户将有权访问服务器的 secureAdmin 目录。
      UserRole 添加到此角色的用户将有权访问服务器的 secureUser 目录。
    9. 通过执行以下操作,创建和配置名为 AdminConstraint 的安全约束:
      1. 单击 "Add Security Constraint"(添加安全约束),创建新的安全约束。
      2. 输入 AdminConstraint 作为新安全约束的显示名称。
      3. 单击 "Add"(添加),添加 "Web Resource Collection"(Web 资源集合)。
      4. 在 "Add Web Resource"(增加 Web 资源)对话框中,将 "Resource Name"(资源名称)设置为 Admin,将“URL 模式”设置为 /secureAdmin/*,然后单击 "OK"(确定)。

        注:如果使用星号 (*),则会授予用户访问该文件夹中所有文件的权限。

        "Add Web Resource"(增加 Web 资源)对话框
      5. 选中 "Enable Authentication Constraint"(启用验证约束),然后单击 "Edit"(编辑)。"Edit Role Names"(编辑角色名称)对话框将会打开。
      6. 在 "Edit Role Names"(编辑角色名称)对话框中,在左窗格中选择 AdminRole,单击 "Add"(添加),然后单击 "OK"(确定)。

        在完成上述步骤之后,结果应如下图所示:

        管理员和用户约束
    10. 通过执行以下操作,创建和配置名为 UserConstraint 的安全约束:
      1. 单击 "Add Security Constraint"(添加安全约束),创建新的安全约束。
      2. 输入 UserConstraint 作为新安全约束的显示名称。
      3. 单击 "Add"(添加),添加 "Web Resource Collection"(Web 资源集合)。
      4. 在 "Add Web Resource"(增加 Web 资源)对话框中,将 "Resource Name"(资源名称)设置为 User,将 URL 模式设置为 /secureUser/*,然后单击 "OK"(确定)。
      5. 选中 "Enable Authentication Constraint"(启用验证约束),然后单击 "Edit"(编辑)以编辑 "Role Name"(角色名称)字段。
      6. 在 "Edit Role Names"(编辑角色名称)对话框中,在左窗格中选择 AdminRole 和 UserRole,单击 "Add"(添加),然后单击 "OK"(确定)。
      注:还可以在 web.xml 中设置会话的超时时间。要设置超时,请单击可视编辑器的 "General"(常规)标签,然后指定希望会话持续的时间。默认值为 30 分钟。

配置服务器部署描述符

如果要将应用程序部署到 GlassFish 或 WebLogic Server,则需配置服务器部署描述符,以映射在 web.xml 中定义的安全角色。服务器部署描述符列在 "Projects"(项目)窗口中项目的 "Configuration Files"(配置文件)节点下。

配置 GlassFish Server 部署描述符

GlassFish Server 部署描述符名为 glassfish-web.xml。服务器部署描述符在 "Configuration Files"(配置文件)文件夹中。如果它不在此处,可通过右键单击项目的节点并转至 "New"(新建)> "Other"(其他)> "GlassFish" > "GlassFish Deployment Descriptor"(GlassFish 部署描述符)来创建。接受所有默认设置。

请注意,在 web.xml 中输入的值将显示在 glassfish-web.xml 中。IDE 会从 web.xml 中提取这些值。

配置 GlassFish 部署描述符:

  1. 在 "Projects"(项目)窗口中,展开项目的 "Configuration Files"(配置文件)节点,然后双击 glassfish-web.xmlglassfish-web.xml 部署描述符将在 GlassFish 部署描述符的特殊标签化编辑器中打开。

    注:对于早于 3.1 的 GlassFish Server 版本,此文件名为 sun-web.xml

  2. 选择 "Security"(安全)标签以显示安全角色。
  3. 选择 AdminRole 安全角色节点以打开 "Security Role Mapping"(安全角色映射)窗格。
  4. 单击 "Add Principal"(添加主用户),并为主用户名称输入 admin。单击 "OK"(确定)。

    "Add Principal"(添加主用户)对话框
  5. 选择 UserRole 安全角色节点以打开 "Security Role Mapping"(安全角色映射)窗格。
  6. 单击 "Add Principal"(添加主用户),并为主用户名称输入 user。单击 "OK"(确定)。
  7. 将更改保存到 glassfish-web.xml

此外,也可以通过单击 "XML" 标签,在 XML 编辑器中查看和编辑 glassfish-web.xml。如果在 XML 编辑器中打开 glassfish-web.xml,则可以看到 glassfish-web.xml 具有以下安全角色映射信息:

<security-role-mapping>
    <role-name>AdminRole</role-name>
    <principal-name>admin</principal-name>
</security-role-mapping>
<security-role-mapping>
    <role-name>UserRole</role-name>
    <principal-name>user</principal-name>
</security-role-mapping>

配置 WebLogic Server 部署描述符

WebLogic 部署描述符名为 weblogic.xml。目前,IDE 对 GlassFish 部署描述符的支持未扩展至 WebLogic 部署描述符。因此,您需要手动对 weblogic.xml 进行所有更改。

WebLogic Server 部署描述符在 "Configuration Files"(配置文件)文件夹中。如果它不在此处,可通过右键单击项目的节点并转至 "New"(新建)> "Other"(其他)> "WebLogic" > "WebLogic Deployment Descriptor"(WebLogic 部署描述符)来创建。接受所有默认设置。

注:有关确保 WebLogic 中 web 应用程序安全(包括声明和编程安全)的详细信息,请参见针对 Oracle WebLogic Server 的 Oracle Fusion Middleware 编程安全

配置 WebLogic 部署描述符:

  1. 在 "Projects"(项目)窗口中,展开项目的 "Configuration Files"(配置文件)节点,然后双击 weblogic.xmlweblogic.xml 部署描述符在编辑器中打开。
  2. <weblogic-web-app> 元素内,键入或粘贴以下安全角色指定元素:
    <security-role-assignment>
        <role-name>AdminRole</role-name>
        <principal-name>adminGroup</principal-name>
    </security-role-assignment>
    <security-role-assignment>
        <role-name>UserRole</role-name>
        <principal-name>userGroup</principal-name>
    </security-role-assignment>
  3. 将更改保存到 weblogic.xml

部署并运行应用程序

在 "Projects"(项目)窗口中,右键单击该项目节点并选择 "Run"(运行)。

注:默认情况下,将在启用“在保存时编译”功能的情况下创建项目,因此无需先编译代码即可在 IDE 中运行应用程序。有关“在保存时编译”功能的详细信息,请参见 Developing Applications with NetBeans IDE User's Guide 中的 Building Java Projects

在构建应用程序并将其部署到服务器之后,将在 Web 浏览器中打开起始页。通过单击 adminuser 选择您要访问的安全区域。

部署的应用程序 1

在提供用户和口令之后,共有三个可能的结果:

  • 此用户的口令正确并且用户具有访问安全内容的权限 -> 显示安全内容页

    用户安全区域
  • 此用户的口令不正确 -> 显示错误页

    登录错误页
  • 此用户的口令正确,但用户没有访问安全内容的权限 -> 浏览器显示 "Error 403 Access to the requested resource has been denied"

    拒绝访问

小结

在本教程中,您创建了一个安全 Web 应用程序。您已经通过使用 web.xml 和 glassfish-web.xml 描述符编辑器,以及创建具有安全登录和多个身份标识的 Web 页,编辑了安全设置。


另请参见






get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo