开发 BASIC 身份验证 Web 应用程序

转载 2007年10月15日 08:51:00

 

使用基本身份验证时,Web 浏览器会弹出一个登录屏幕来响应 WebLogic 资源请求。登录屏幕提示用户输入用户名和密码。图 3-2 给出了一个典型的登录屏幕。

图 3-2 身份验证登录屏幕

身份验证登录屏幕

 

要开发提供基本身份验证的 Web 应用程序,请执行下列步骤:

  1. 创建 web.xml 部署描述符。请在该文件中包括以下信息(请参阅清单 3-1):
    1. 定义欢迎文件。欢迎文件的名称为 welcome.jsp
    2. 为计划要保护的每组 Web 应用程序资源(即 URL 资源)定义安全约束。每组资源共享一个通用的 URL。通常,HTML 页、JSP 和 Servlet 等 URL 资源受最大的保护,但其他类型的 URL 资源也受支持。在清单 3-1 中,URL 模式指向位于 Web 应用程序的顶级目录中的 welcome.jsp 文件;可以访问 URL 资源的 HTTP 方法(POST 和 GET);以及安全角色名 webuser
      注意: 指定安全角色名称时,请遵循以下约定和限制:
      • 安全角色名称的正确语法与可扩展标记语言 (XML) 建议中对 Nmtoken 定义的语法(可从 Web 上获取,网址为 http://www.w3.org/TR/REC-xml#NT-Nmtoken)相同。
      • 不要使用空格、逗号、连字符或以下逗号分隔列表中的任何字符:/t、< >、#、|、&、~、?、( )、{ }。
      • 安全角色名区分大小写。
      • BEA 建议对安全角色名使用以下约定:它们应该独一无二。
    3. 使用 <login-config> 标记定义要使用的身份验证类型以及将应用安全约束的安全领域。在清单 3-1 中指定了 BASIC 类型,并且领域是默认领域,这意味着,当 WebLogic Server 实例启动时,安全约束将应用到活动安全领域。
    4. 定义一个或多个安全角色并将它们映射到安全约束。在我们的示例中,只在安全约束中定义了一个安全角色 webuser,因此,因此在此处只定义一个安全角色名称(请参阅清单 3-1 中的 <security-role> 标记)。但是,实际上可以定义任意数量的安全角色。
      清单 3-1 基本身份验证 web.xml 文件
      <?xml version='1.0' encoding='UTF-8'?>
      <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <web-app>
      <welcome-file-list>
      <welcome-file>welcome.jsp</welcome-file>
      </welcome-file-list>
                <security-constraint>
      <web-resource-collection>
      <web-resource-name>Success</web-resource-name>
      <url-pattern>/welcome.jsp</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
      </web-resource-collection>
      <auth-constraint>
      <role-name>webuser</role-name>
      </auth-constraint>
      </security-constraint>
                <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>default</realm-name>
      </login-config>
                 <security-role>
      <role-name>webuser</role-name>
      </security-role>
      </web-app>
  2. 创建 weblogic.xml 部署描述符。在该文件中,将安全角色名称映射到用户和组。清单 3-2 给出了一个示例 weblogic.xml 文件,该文件将在 web.xml 文件的 <security-role> 标记中定义的 webuser 安全角色映射到一个名为 myGroup 的组。请注意,委托人可以是用户,也可以是组,因此 <principal-tag> 可用于用户,也可以用于组。使用此配置时,WebLogic Server 只允许 myGroup 中的用户访问受保护的 URL 资源 welcome.jsp
    注意: 从 9.0 版开始,默认角色映射行为是指在未在 weblogic.xml 中指定角色映射时创建空角色映射。在 8.x 版中,如果未包括 weblogic.xml 文件,或包括了该文件但未包括所有安全角色的映射,则没有映射的安全角色默认为其名称与角色名匹配的任何用户或组。有关角色映射行为和向后兼容性设置的信息,请参阅“使用角色和策略确保 WebLogic 资源安全”手册中的了解“已启用组合角色映射”设置部分
    清单 3-2 基本身份验证 weblogic.xml 文件
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <weblogic-web-app>
         <security-role-assignment>
    <role-name>webuser</role-name>
    <principal-name>myGroup</principal-name>
    </security-role-assignment>
    </weblogic-web-app>
  3. 创建一个文件,该文件在用户输入用户名和密码并获得访问权限时将生成欢迎屏幕。清单 3-3 显示了一个示例 welcome.jsp 文件。图 3-3 显示了欢迎屏幕。
    清单 3-3 基本身份验证 welcome.jsp 文件
    <html>
    <head>
    <title>Browser Based Authentication Example Welcome Page</title>
    </head>
    <h1> Browser Based Authentication Example Welcome Page </h1>
      <p> Welcome <%= request.getRemoteUser() %>!
      </blockquote>
    </body>
    </html>
注意: 清单  3-3 中,请注意,JSP 将调用一个 API (request.getRemoteUser()) 来获取登录用户的用户名。可改用另一个 API weblogic.security.Security.getCurrentSubject()。要使用该 API 获取用户的名称,请将它与 SubjectUtils API 结合使用,如下所示:
String username = weblogic.security.SubjectUtils.getUsername(
weblogic.security.Security.getCurrentSubject());
图 3-3 欢迎屏幕


欢迎屏幕

  1. 启动 WebLogic Server,然后定义有权访问 URL 资源的用户和组。在 weblogic.xml 文件(请参阅清单 3-2)中,<principal-name> 标记将 myGroup 定义为有权访问 welcome.jsp 的组。因此,请使用管理控制台定义 myGroup 组,再定义一名用户,然后将该用户添加到 myGroup 组中。有关添加用户和组的信息,请参阅“使用角色和策略确保 WebLogic 资源安全”中的用户、组和安全角色
  2. 部署 Web 应用程序并使用在上一步中定义的用户访问受保护的 URL 资源。
    1. 有关部署说明,请参阅部署 Web 应用程序
    2. 打开 Web 浏览器并输入以下 URL:

      http://localhost:7001/basicauth/welcome.jsp

    3. 输入用户名和密码。即显示欢迎屏幕。

使用 HttpSessionListener 补偿“浏览器缓存凭据”

浏览器会缓存用户凭据并经常自动将它们重新发送到服务器。这样,即使退出或超时,WebLogic Server 会话也不会受到破坏。可以只缓存当前浏览器会话的凭据,也可以缓存多个浏览器会话的凭据,具体取决于浏览器。

可以通过创建实现 javax.servlet.http.HttpSessionListener 接口的类来验证 WebLogic Server 的会话是否受到了破坏。如果 Web 应用程序中的活动会话列表发生改变,则会通知该接口的实现。要接收通知事件,必须在 web.xml 中的 Web 应用程序部署描述符中配置实现类。

要配置会话监听器类,请执行下列操作:

  1. 打开 Web 应用程序的 web.xml 部署描述符,您将在文本编辑器中为该描述符创建会话监听器类。web.xml 文件位于 Web 应用程序的 WEB-INF 目录中。
  2. 添加使用 web.xml 部署描述符的监听器元素的事件声明。事件声明可定义当事件发生时要调用的事件监听器类。例如:

    <listener>
    <listener-class>myApp.MySessionListener</listener-class>
    </listener>

    有关其他信息和依次准则,请参阅 配置事件监听器类

编写并部署会话监听器类。清单 3-4 中显示的示例使用简单计数器跟踪会话计数。

清单 3-4 跟踪会话计数
package myApp;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
public class MySessionListener implements HttpSessionListener {
       private static int sessionCount = 0;

public void sessionCreated(HttpSessionEvent se) {
sessionCount++;
//写入日志或执行其他处理。
       public void sessionDestroyed(HttpSessionEvent se) {
if(sessionCount > 0)
sessionCount--;
//写入日志或执行其他处理。

一个简单的会员身份验证的WEB应用程序

  • 2008年10月21日 13:16
  • 14KB
  • 下载

开发FORM 身份验证 Web 应用程序

将 FORM 身份验证用于 Web 应用程序时,将提供一个自定义登录屏幕(Web 浏览器在响应 Web 应用程序资源请求时显示)和一个错误屏幕(在登录失败时显示)。可以使用 HTML 页、JSP 或 ...
  • sinat_38032468
  • sinat_38032468
  • 2017年03月23日 13:35
  • 114

如何使用 Web API 来对 MVC 应用程序进行身份验证

如何使用web api 保证数据的有效性?实际项目中不是什么数据提交过来都是符合要求的,况且在天朝还有N多河蟹的关键字等等。所以以下内容就是增加web api 数据验证. 第一步修改 实体模型 p...
  • zhanglong_longlong
  • zhanglong_longlong
  • 2016年04月09日 19:18
  • 1047

Web应用程序开发原理

一、主机/终端模式(Mainframe/Terminal) 企业应用程序是围绕一个中心大型主机建立的,使用者一般通过只有一个屏幕、一个键盘和一根主机连接线的“哑终端”与主机的应用程序进行交互。例如:超...
  • yangtjh
  • yangtjh
  • 2015年07月27日 20:05
  • 1349

C#调用Web Service时的身份验证

在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题:怎么防止别人访问我的WebService?从哪里引用我的WebService?对于第一个问题,就涉...
  • xiaogui340
  • xiaogui340
  • 2013年04月09日 09:21
  • 13999

iOS 网络开发(五)认证和授权的一些基本理解

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 前言:可能在公司工作时间长了,以至于iOS都习惯性的写成了IOS,既然上一篇文章里一同学提出来了,我就改过来吧。本文...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年04月26日 11:28
  • 2974

Java Web学习(4):徒手开发Web应用程序

一Tomcat服务器的目录结构        在开发Web应用程序之前有必要先来介绍一下Tomcat服务器的目录结构。        1)我们打开安装好的Tomcat服务器的安装目录,我的是:E:...
  • erlian1992
  • erlian1992
  • 2016年07月10日 18:03
  • 2383

五个步骤告诉你如何开发Web应用程序

五个步骤告诉你如何开发Web应用程序 这是一个经常被问到的问题,问的理所当然。作为一个程序员,为什么我就非要被认为知道如何开发Web应用程序呢?这个问题没有一个简单的答案,甚至那些教育机构都未必能清...
  • u019524703
  • u019524703
  • 2015年01月09日 10:18
  • 1073

java web之基于表单的身份验证

1.web应用程序安全主要注意什么 ①阻止未授权的用户访问敏感的数据 指定哪些用户才能访问哪些指定资源、用户的身份验证。身份验证简单方式采用post方式提交表单,用户名和密码。身份验证复杂方式采用X....
  • ya_1249463314
  • ya_1249463314
  • 2017年07月07日 17:14
  • 319

Java Web学习(1):Web应用程序与Web服务器

一Web应用程序         (1)什么是Web应用程序         应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览 器端...
  • erlian1992
  • erlian1992
  • 2016年07月09日 21:45
  • 4743
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开发 BASIC 身份验证 Web 应用程序
举报原因:
原因补充:

(最多只允许输入30个字)