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

转载 2007年10月15日 13:39:00

将 FORM 身份验证用于 Web 应用程序时,将提供一个自定义登录屏幕(Web 浏览器在响应 Web 应用程序资源请求时显示)和一个错误屏幕(在登录失败时显示)。可以使用 HTML 页、JSP 或 Servlet 生成登录屏幕。基于表单登录的优点是:可以完全控制这些屏幕,因此可以将它们设计得满足应用程序或企业策略/准则的要求。

登录屏幕提示用户输入用户名和密码。图 3-4 所示为使用 JSP 生成的典型登录屏幕,而清单 3-5 所示则为源代码。

图 3-4 基于表单的登录屏幕 (login.jsp)

基于表单的登录屏幕 (login.jsp)

 

清单 3-5 基于表单的登录屏幕源代码 (login.jsp)
<html>
<head>)
<title>Security WebApp login page</title>
</head>
<body bgcolor="#cccccc">
<blockquote>
<img src=BEA_Button_Final_web.gif align=right>
<h2>Please enter your user name and password:</h2>
<p>
<form method="POST" action="j_security_check">
<table border=1>
<tr>
<td>Username:</td>
<td><input type="text" name="j_username"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="j_password"></td>
</tr>
<tr>
<td colspan=2 align=right><input type=submit
value="Submit"></td>
</tr>
</table>
</form>
</blockquote>
</body>
</html>

图 3-5 所示为使用 HTML 生成的典型登录错误屏幕,而清单 3-6 所示则为源代码。

图 3-5 登录错误屏幕

登录错误屏幕

 

清单 3-6 登录错误屏幕源代码
<html>
<head>
<title>Login failed</title>
</head>
<body bgcolor=#ffffff>
<blockquote>
<img src=/security/BEA_Button_Final_web.gif align=right>
<h2>Sorry, your user name and password were not recognized.</h2>
<p><b>
<a href="/security/welcome.jsp">Return to welcome page</a> or
<a href="/security/logout.jsp">logout</a>
</b>
</blockquote>
</body>
</html>

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

  1. 创建 web.xml 部署描述符。请在该文件中包括以下信息(请参阅清单 3-7):
    1. 定义欢迎文件。欢迎文件的名称为 welcome.jsp
    2. 为计划要保护的每组 URL 资源定义安全约束。每组 URL 资源共享一个通用的 URL。通常,HTML 页、JSP 和 Servlet 等 URL 资源受最大的保护,但其他类型的 URL 资源也受支持。在清单 3-7 中,URL 模式指向 /admin/edit.jsp,从而保护位于 Web 应用程序的 admin 子目录中的 edit.jsp 文件;定义可以访问 URL 资源的 HTTP 方法 (GET);并定义安全角色名 admin
      注意: 安全角色名称中不能包含连字符。在管理控制台中,无法修改含连字符的安全角色名称。另外,BEA 建议对安全角色名使用以下约定:它们应该独一无二。
    3. 定义要使用的身份验证类型以及将应用安全约束的安全领域。在本例中,指定了 FORM 类型,但未指定领域,因此,领域是默认领域,这意味着安全约束将应用到 WebLogic Server 实例启动时激活的安全领域。
    4. 定义一个或多个安全角色并将它们映射到安全约束。在我们的示例中,只在安全约束中定义了一个安全角色 admin,因此在此处只定义一个安全角色名称。但是,实际上可以定义任意数量的安全角色。
      清单 3-7 FORM 身份验证 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>AdminPages</web-resource-name>
      <description>
      These pages are only accessible by authorized
      administrators.
      </description>
      <url-pattern>/admin/edit.jsp</url-pattern>
      <http-method>GET</http-method>
      </web-resource-collection>
      <auth-constraint>
      <description>
      These are the roles who have access.
      </description>
      <role-name>
      admin
      </role-name>
      </auth-constraint>
      <user-data-constraint>
      <description>
      This is how the user data must be transmitted.
      </description>
      <transport-guarantee>NONE</transport-guarantee>
      </user-data-constraint>
      </security-constraint>
          <login-config>
      <auth-method>FORM</auth-method>
      <form-login-config>
      <form-login-page>/login.jsp</form-login-page>
      <form-error-page>/fail_login.html</form-error-page>
      </form-login-config>
      </login-config>
          <security-role>
      <description>
      An administrator
      </description>
      <role-name>
      admin
      </role-name>
      </security-role>
      </web-app>
  2. 创建 weblogic.xml 部署描述符。在该文件中,将安全角色名称映射到用户和组。清单 3-8 给出了一个示例 weblogic.xml 文件,该文件将在 web.xml 文件的 <security-role> 标记中定义的 admin 安全角色映射到一个名为 supportGroup 的组。使用此配置时,WebLogic Server 将只允许 supportGroup 组中的用户访问受保护的 WebLogic 资源。但是,可以使用管理控制台来修改 Web 应用程序的安全角色,以便其他组可以访问受保护的 WebLogic 资源。
    清单 3-8 FORM 身份验证 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>admin</role-name>
    <principal-name>supportGroup</principal-name>
    </security-role-assignment>
    </weblogic-web-app>
  3. 创建一个 Web 应用程序文件,该文件在用户通过输入 URL 请求受保护的 Web 应用程序资源时将生成欢迎屏幕。清单 3-9 显示了一个示例 welcome.jsp 文件。图 3-3 显示的是欢迎屏幕。
    清单 3-9 FORM 身份验证 welcome.jsp 文件
    <html>
    <head>
    <title>Security login example</title>
    </head>
      <%
    String bgcolor;
    if ((bgcolor=(String)application.getAttribute("Background")) ==
    null)
    {
    bgcolor="#cccccc";
    }
    %>
      <body bgcolor=<%="/""+bgcolor+"/""%>> 
      <blockquote>
    <img src=BEA_Button_Final_web.gif align=right>
    <h1> Security Login Example </h1>
      <p> Welcome <%= request.getRemoteUser() %>! 
      <p> If you are an administrator, you can configure the background 
    color of the Web Application.
    <br> <b><a href="admin/edit.jsp">Configure background</a></b>.
      <% if (request.getRemoteUser() != null) { %>
    <p> Click here to <a href="logout.jsp">logout</a>.
    <% } %>
      </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());
  1. 启动 WebLogic Server,然后定义有权访问 URL 资源的用户和组。在 weblogic.xml 文件(请参阅清单 3-8)中,<role-name> 标记将 admin 定义为有权访问 edit.jsp 文件的组,并将用户 joe 定义为该组的成员。因此,请使用管理控制台定义 admin 组,定义用户 joe,并将 joe 添加到 admin 组中。也可以定义其他用户并将其添加到组中,这些用户也将有权访问受保护的 WebLogic 资源。有关添加用户和组的信息,请参阅“使用角色和策略确保 WebLogic 资源安全”中的用户、组和安全角色
  2. 部署 Web 应用程序并使用在上一步中定义的用户访问受保护的 Web 应用程序资源。
    1. 有关部署说明,请参阅部署 Web 应用程序
    2. 打开 Web 浏览器并输入以下 URL:

      http://hostname:7001/security/welcome.jsp

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

Web项目身份验证设置为Windows时如何将项目部署到IIS进行调试

因为项目有多个解决方案组成,彼此之间存在主子站点问题,如果想要同时调试多个项目,就不能简单的用VS的IISExpress进行调试,需要将项目配置成IIS本地(这里是IIS)进行调试,配置过程一切顺利,...
  • starfd
  • starfd
  • 2015年05月27日 21:14
  • 5508

Web用户的身份验证及WebApi权限验证流程的设计和实现

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权...
  • zjlovety
  • zjlovety
  • 2013年12月03日 14:42
  • 49717

Web用户的身份验证及WebApi权限验证流程的设计和实现

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权...
  • besley
  • besley
  • 2013年01月18日 13:19
  • 33581

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

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

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

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

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

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

基于Form的web身份验证--C#实施攻略

CustomIdentity类using System; using System.Collections.Generic; using System.Linq; using System.Web; ...
  • wangdingbang
  • wangdingbang
  • 2011年07月27日 16:34
  • 993

基于Form的web身份验证--C#实施攻略

原贴:http://blog.csdn.net/wangdingbang/article/details/6638279 CustomIdentity类: using System; ...
  • ljsql
  • ljsql
  • 2011年08月02日 13:58
  • 491

登录工程三:现代Web应用中的身份验证实践

登录系统     首先,我们要为“登录”做一个简要的定义,令后续的讲述更准确。之前的两篇文章有意无意地混淆了“登录”与“身份验证”的说法,因为在本篇之前,不少“传统Web应用”都将对身份的识别看作整...
  • jun55xiu
  • jun55xiu
  • 2017年05月05日 16:12
  • 530

登录工程二:现代 Web 应用的典型身份验证需求

朋友就职于某大型互联网公司。前不久,在闲聊间我问他日常工作的内容,他说他所在部门只负责一件事,即用户与登录。 而他的具体工作则是为各个业务子网站提供友好的登录部件(Widget),从而统一整个网...
  • jun55xiu
  • jun55xiu
  • 2017年05月05日 15:52
  • 909
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开发 FORM 身份验证 Web 应用程序
举报原因:
原因补充:

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