powered By 唯J族
 当前位置: 开源项目  
   V-Security(1.0.230)
  项目简介
  发布历史
  参与者列表
  新特性
  安装步骤
  使用简介
  @TODO
 
  旧版本
  1.0.0
 
   关于唯J族
   加入唯J族
   唯J族成员
   联系我们
V-Security安全框架(1.0.230)
 
用户手册
 

1、管理安全提供者

1.1、管理用户

1.2、管理用户组

1.3、管理角色

2、保护Web资源

2.1、声明式安全

2.2、编程式安全


   最新版本号: 1.0.230

2、保护Web资源

  V-Security安全框架中为Web资源的保护提供两种安全方式:

    。声明式安全

  。编程式安全

  V-Security支持这两种方式单独工作,也可以同时工作。

2.1 声明式安全

 V-Security安全框架中,我们可以将应用的安全框架包括安全角色、访问控制等信息加入到独立的安全配置文件(WEB-INF/classes/config/ security-resources.xml)中,达到保护Web资源的目的。V-Security中,目前只能支持基于FORM的用户认证方式。当使用FORM认证方式时,我们需要提供用户登录时所使用的界面和登录失败时需要显示的界面,登录界面可以是HTML、JSP或者其他形式所生成的界面。登录界面提示用户输入用户名和密码图是一个使用JSP生成的典型登录页面

清单中显示了JSP页面的源代码

图4-1  基于FORM的登录界面 (login.jsp)


 
  清单4-1  基于FORM的登录界面源代码 (login.jsp)

1.      <%@ page language="java" contentType="text/html;charset=gb2312"%>

2.      <html>

3.      <head>

4.      <link rel="stylesheet" href="css/screen.css" type="text/css" />

5.      <title>V-Security系统登录</title>

6.      <SCRIPT LANGUAGE=JAVASCRIPT>

7.      <!--

8.      if (top.location != self.location)top.location=self.location;

9.      // --></SCRIPT>

10.  </head>

11.  <body>

12.  <br><br>

13.  <form method="post" action="security">

14.  <table width="400" border="0" align="center" cellpadding="0"

15.      cellspacing="0">

16.      <tr>

17.              <td>

18.              <table width="100%" border=0 cellpadding="0" cellspacing="0">

19.                     <tr bgcolor="#FFFFFF">

20.                             <td height="25" colspan="2" align="center" bgcolor="#D0D9FD" >
<h2>用< 户< 登< 录</h2></td>

21.                     </tr>

22.                     <tr bgcolor="#FFFFFF">

23.                             <td height="10" colspan="2" align="center" bgcolor="#E2E8FE"
class="blank">用&quot;<span class="empty">*</span>&quot;标注的字段必须输入</td>

24.                     </tr>

25.                     <tr bgcolor="#FFFFFF">

26.                             <td width="29%" height="25" bgcolor="#F0F3FF" class="blank">
用户名:</td>

27.                             <td width="71%" bgcolor="#F0F3FF" class="blank"><input
name="username" />

28.                    <span class="empty">*</span></td>

29.                     </tr>

30.                     <tr bgcolor="#FFFFFF">

31.                             <td height="25" bgcolor="#F0F
3FF" class="blank"> 密码:</td> 32.                            

<td bgcolor="#F

0F3FF" class="blank"><input type="password"
name="password" class="input1" />

33.                    <span class="empty">*</span></td>

34.                     </tr>

35.                     <tr bgcolor="#FFFFFF">

36.                             <td height="30" colspan=2 align=center bgcolor="#F0F3FF"
class="blank"><input type="submit"

37.                                     class="input2" value="登  录">   

38.                       <input type="reset" class="input2"

39.                                     value="重  输"></td> 40.                     </tr>

41.              </table>

42.              </td>

43.      </tr>

44.  </table>

45.  </form>

46.  </body>

47.  </html>

图 4-2 是使用JSP生成的登录失败页面

清单4-2 显示了该页面的源代码

图4-2 登录失败页面
  清单4-2  登录失败页面源代码(error.jsp)

1.      <%@ page language="java" contentType="text/html;charset=gb2312" %>

  2.      <html>

3.      <head>

4.      <title>登录失败</title>

5.      </head>

6.      <body bgcolor=#ffffff>

7.      <table width="400" border="0" align="center" cellpadding="0"

8.          cellspacing="0">

9.          <tr>

10.        <td>

11.              <table width="100%" border=0 cellpadding="0" cellspacing="0">

12.     <tr bgcolor="#FFFFFF">

13.                       <td height="25" colspan="2" align="center" bgcolor="#FFFFFF"
class="title1">&nbsp;</td>

14.                </tr>

15.                     <tr bgcolor="#FFFFFF">

16.                             <td height="25" colspan="2" align="center" bgcolor="#D0D9FD"
class="blank"><h2 class="STYLE1">登录失败</h2></td>

17.                     </tr>

18.                     <tr bgcolor="#FFFFFF">

19.                             <td height="10" colspan="2" bgcolor="#F

0F3FF" class="blank"></td>

20.                     </tr>

21.                     <tr bgcolor="#FFFFFF">

22.                             <td height="10" colspan="2" bgcolor="#F0F3FF" class="blank">
您的用户名或者密码错误,请按此<a href="login.jsp" class="blank">
<span class="STYLE3">重新登录</span></a></td>

23.                     </tr>

24.                     <tr bgcolor="#FFFFFF">

25.                             <td height="10" colspan="2" bgcolor="#F0F3FF" class="blank"></td>

26.                     </tr>

27.              </table>

28.        </td>

29.      </tr>

30.  </table>

31.  </body>

32.  </html>

要使用V-Security安全框架保护您的Web资源,需要完成以下步骤:

1、  修改web.xml配置文件,详细内容参见清单(4-3)

  a)      创建名为SecurityFilter的Filter

  SecurityFilter的处理类是org.vivianj.web.security.SecurityFilter,默认设置为对所有 Web资源有效,SecurityFilter可以接受三个参数,分别是form-login-page、form-error-page、 form-login-ok-page,他们分别对应的是登录页面的路径、登录失败页面的路径和登录成功页面 的路径,您可以根据自己的实际情况进行修改。

   b)    新建一个Session Listener

  V-Security安全框架中用户登录信息保存在Session中,因此需要一个Session Listenser处 理用户非正常退出后留下的Session信息。Session Listener的处理类是org.vivianj.web.security.listener.SecuritySessionListener

  c)     新建名为VivianjSecurityServlet    

  V-Security中默认安全提供者(Security Provider)的登录接口就是这个Servlet,它的处理
类是org.vivianj.web.security.SecurityServlet  

清单 4-3  WEB-INF/web.xml

1.      <?xml version="1.0" encoding="GBK"?>  

2.      <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>

3.       

4.      <web-app>

5.        <display-name>security</display-name>

6.        <description></description>

7.        <filter>

8.          <filter-name>SecurityFilter</filter-name>

9.          <display-name>SecurityFilter</display-name>

10.      <description></description>

11.      <filter-class>org.vivianj.web.security.SecurityFilter</filter-class>

12.      <init-param>

13.        <param-name>form-login-ok-page</param-name>

14.        <param-value>ok.jsp</param-value>

15.      </init-param>

16.      <init-param>

17.        <param-name>form-error-page</param-name>

18.        <param-value>error.jsp</param-value>

19.      </init-param>

20.      <init-param>

21.        <param-name>form-login-page</param-name>

22.        <param-value>login.jsp</param-value>

23.      </init-param>

24.    </filter>

25.    <filter-mapping>

26.      <filter-name>SecurityFilter</filter-name>

27.      <url-pattern>/*</url-pattern>

28.    </filter-mapping>

29.   

30.    <listener>

31.      <listener-class>org.vivianj.web.security.listener.SecuritySessionListener
</listener-class>

32.    </listener>

33.   

34.    <servlet>

35.      <servlet-name>action</servlet-name>

36.      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

37.      <init-param>

38.        <param-name>debug</param-name>

39.        <param-value>2</param-value>

40.      </init-param>

41.      <init-param>

42.        <param-name>config</param-name>

43.        <param-value>/WEB-INF/struts-config.xml</param-value>

44.      </init-param>

45.      <init-param>

46.        <param-name>detail</param-name>

47.        <param-value>2</param-value>

48.      </init-param>

49.      <load-on-startup>2</load-on-startup>

50.    </servlet>

51.    <servlet>

52.      <servlet-name>DisplaySource</servlet-name>

53.      <display-name>DisplaySource</display-name>

54.      <description>display source of sample jsp pages</description>

55.      <servlet-class>org.displaytag.sample.DisplaySourceServlet</servlet-class>

56.    </servlet>

57.    <servlet>

58.      <servlet-name>VivianjSecurity</servlet-name>

59.      <display-name>VivianjSecurity</display-name>

60.      <description></description>

61.      <servlet-class>org.vivianj.web.security.SecurityServlet</servlet-class>

62.    </servlet>

63.    <servlet-mapping>

64.      <servlet-name>VivianjSecurity</servlet-name>

65.      <url-pattern>/security</url-pattern>

66.    </servlet-mapping>

67.    <servlet-mapping>

68.      <servlet-name>DisplaySource</servlet-name>

69.      <url-pattern>*.source</url-pattern>

70.    </servlet-mapping>

71.    <servlet-mapping>

72.      <servlet-name>action</servlet-name>

73.      <url-pattern>*.do</url-pattern>

74.    </servlet-mapping>

75.    <welcome-file-list>

76.      <welcome-file>login.jsp</welcome-file>

77.      <welcome-file>index.html</welcome-file>

78.      <welcome-file>upload.jsp</welcome-file>

79.    </welcome-file-list>

80.    <taglib>

81.      <taglib-uri>/tags/struts-bean</taglib-uri>

82.      <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

83.    </taglib>

84.    <taglib>

85.      <taglib-uri>/tags/struts-logic</taglib-uri>

86.      <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>

87.    </taglib>

88.    <taglib>

89.      <taglib-uri>/tags/struts-html</taglib-uri>

90.      <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

91.    </taglib>

92.    <taglib>

93.      <taglib-uri>/tags/struts-tiles</taglib-uri>

94.      <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>

95.    </taglib>

96.    <taglib>

97.      <taglib-uri>http://displaytag.sourceforge.net/</taglib-uri>

98.      <taglib-location>/WEB-INF/displaytag-11.tld</taglib-location>

99.    </taglib> 100.   <taglib>

101.     <taglib-uri>/tags/struts-nested</taglib-uri>

102.     <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>

103.   </taglib>

104. </web-app>  

2、  增加安全约束声明   

   修改WEB-INF/classes/config/security-resources.xml

   a)       为需要保护的资源增加新的security-constraint元素       

    保护的URL可以是HTMLJSPServlet或者其他可访问的Web资源。清单4-4中要保护的URL /undersecurity/declarative/b.jsp

   b)       为被保护的资源加入角色       

   security-constraint元素中可以加入roles元素声明访问被保护资源所必需具备的角色,角 色可以使用role元素增加多个。比如清单4-4中被保护的资源可以被角色为”roleA””roleB” 的用户同时访问  

清单4-4 WEB-INF/classes/config/security-resources.xml  

1.      <?xml version="1.0" encoding="GBK"?>

2.       

3.      <security-constraints>

4.        <security-constraint name="adminSecurity">

5.          <web-resource>

6.            <url-pattern>/undersecurity/declarative/b.jsp</url-pattern> 7.          </web-resource>

8.          <roles>

9.               <role name="roleA" />

10.           <role name="roleB" />

11.      </roles>

12.    </security-constraint>

13.  </security-constraints>

 

3、编写欢迎页面(ok.jsp)    下面是一个欢迎页面(ok.jsp)的示例界面。

图4-3 欢迎页面(ok.jsp)

 

 

清单4-5 ok.jsp

  1.       <%@ page language="java" contentType="text/html;charset=gb2312" %>

2.       <%@ page import="org.vivianj.web.security.util.PageSecurity" %>

3.       <html>

4.       <head>

5.       <title登录成功</title>

6.       <style type="text/css">

7.       td {

8.      font-size: 14px;

9.       }

10.    .title1 {

11.    font-size: 14px;

12.    color: #00000;

13.    }

14.    -->

15.    </style>

16.    <link href="css/screen.css" rel="stylesheet" type="text/css">

17.    <style type="text/css">

18.    <!--

19.    .STYLE3 {color: #FF0000}

20.    -->

21.    </style>

22.    </head>

23.    <body bgcolor=#ffffff> 24.    <table width="600" border="0" align="center" cellpadding="0"

25.    cellspacing="0" class="page">

 

26.    <tr>

27.   <td>

28.    <table width="100%" border=0 cellpadding="0" cellspacing="0">

29.    <bgcolor="#FFFFFF">

30.    <td height="25" colspan="4" class="title1" align="center">&nbsp;</td>

31.     </tr>

32.   <tr bgcolor="#FFFFFF">

33.     <td height="25" colspan="4" align="center" bgcolor="#D0D9FD" class="title1">
<h2>欢迎您选择V-Securt开源框架!</h2></td>

34.   </tr>

35.                         

36.<tr bgcolor="#FFFFFF">

37.<td height="10" colspan="3" bgcolor="#E2E8FE" align="center"恭喜 <span
class="STYLE3"><%= PageSecurity.getUserPrincipal(request) %></span> 登录成功!

38. <td>

39.  <td align="right" colspan="1" bgcolor="#E2E8FE"><span class="STYLE3"><a
href="<%=request.getContextPath()%>/console/loginOutView.do?userName=
<%=PageSecurity.getUserPrincipal(request)%>"安全退出</a></span></td>

40. </tr>

41.                         

42.  <tr bgcolor="#FFFFFF">

43.  <td height="1" bgcolor="#0099FF" colspan="4"></td>

44. </tr>

45. <tr bgcolor="#FFFFFF">

46.                <td width="19%" height="10" align="center" class="indexleftjsp">管  理</td>

47.       <td width="25%" align="center"><a href="#">个 人信 息</a></td>

48.       <td width="28%" height="10" align="center"><a href="#"内 容 发 布</a></td>

49.          <td width="28%" height="20" align="center"><a href="console/main.jsp"
class="STYLE3"安 全 管 理</a></td>

50.         </tr>

51.        <tr align="center" bgcolor="#FFFFFF">

52.    <td height="1" colspan="4" bgcolor="#0099FF"></td>

53.     </tr>

54.    <tr bgcolor="#FFFFFF">

55.     <td height="20" align="center" class="indexleftjsp"服  务</td>

56.                <td align="center"><a href="#"同 学 搜 索</a></td>

57.                    <td height="10" align="center"><a href="#">免 费 邮 箱</a></td>

58.              <td height="10" align="center"><a href="#"长 沙 社 区</a></td>

59.             </tr>

60.      <tr bgcolor="#FFFFFF">

61.  <td height="1" bgcolor="#0099FF" colspan="4"></td>

62.            </tr>

63.            <tr bgcolor="#FFFFFF">

64.     <td height="20" align="center" class="indexleftjsp">安全示例</td>

65.    <td align="center"><a href="undersecurity/declarative/b.jsp">声明式安全</a></td>

66.                      <td height="10" align="center"><a href="undersecurity/programmatic/c.jsp">

编程式安全</a></td>

67.               <td height="10" align="center"><a href="undersecurity/join/c.jsp"混合式安全</a></td>

68.             </tr>

69.       <tr bgcolor="#FFFFFF">

70.             <td height="1" bgcolor="#0099FF" colspan="4"></td>

71.  </tr>

72.   </table>

73.</td>

74.   </tr>

75.    </table>

76.    </body>

77.    </html>

 

 

4、编写被保护的资源(b.jsp)   

  下面是一个被保护的资源(b.jsp)。

图4-4显示了被保护的资源对应的界面

清单4-6 b.jsp中是被保护资源对应的源代码。

 

图4-4 被保护的资源

 

清单4-6 undersecurity/declarative/b.jsp

1.     <%@ page language="java" contentType="text/html;charset=gb2312" %>

2.     <%@ page import="org.vivianj.web.security.util.PageSecurity" %>

3.         <html>

4.         <head>

5.         <title>V-Security页面级安全示例页</title>

6.         <style type="text/css">

7.         td {font-size: 14px;

8.

9.         }

10.     .title1 {

11.            font-size: 14px;

12.            color: #00000;

13.     }

14.     -->

15.     </style>

16.     <link href="css/screen.css" rel="stylesheet" type="text/css">

17.     <style type="text/css">

18.     <!--

19.     .STYLE3 {color: #FF0000}

20.     -->

21.     </style>

22.     </head>

23.            <body>

24.      

25.     <table width="400" border="0" align="center" cellpadding="5" cellspacing="0">

26.       <tr>

27.         <td align="center" bgcolor="#D0D9FD" valign="middle"><h2>V-Security页面级安全示例页</h2></td>

28.       </tr>

29.       <tr>

30.         <td bgcolor="#E2E8FE">

31.         <br> 

32.          本示例页基于页面级安全保护,只有角色为"roleA"或者"roleB"的用户才有权访问.

33.            <br>

34.     <br>当前登录用户 <font color="red"><%= PageSecurity.getUserPrincipal(request) %><br>&nbsp;</font></td>

35.       </tr>

36.     </table>

37.      

38.            </body>

39.     </html>

 5、完成角色影射  

  请参考1管理安全提供者(Security Provider)中的说明完成角色影射工作。   完成上述步骤后,将V-Security项目发布到服务器上,然后启动服务器,访问/undersecurity/declarative/b.jsp页面,
我们将看到登录页面(因为该资源被保护),输入正确的用户名和密码后登录,再次访问/undersecurity/declarative/b.jsp,
我们将能够看到b.jsp中的界面。

 
主页 | 唯J族主页 | 关于唯J族 | 加入唯J族 | 联系唯J族
© 2001-2020 唯J族 All rights reserved