在GlassFish中为Web应用程序设置用户访问权限
2008-09-22 15:25:40
查看( 606 ) / 评论( 0 )
作者:Yuanxin Li Email:
[email protected]
本文介绍如何利用GlassFish服务器的安全用户认证特性为Web应用程序设置用户访问权限。在实际应用中,我们可能会把用户、权限、角色之类的写在数据库中,用程序加以控制,也可能会用到Spring AOP的Interceptor来拦截非法访问,但是可能会存在一个问题,如果将超级管理员的用户名和密码写在数据库,万一不小心把超级管理员的用户或角色删掉,怎么办?因此让应用服务器来托管管理员(或其他特殊角色),不但可以避免这个问题,而且也简化了应用程序的用户权限控制(你不必因为害怕普通用户非法访问管理员的访问域而费尽心思使用代码或AOP来控制),而且GlassFish应用服务器在安全性方面很有保证,大大提高了应用程序的安全性。
实验环境:
1、Netbeans 6.1中文版,JDK1.6以上
2、GlassFish V2或Sun Application Server
实验步骤:
1、创建Web应用程序,命名为WebApplicationSecurity,在创建过程中保持默认选项即可,不需要选择其他框架。
2、在WEB页 目录下创建两个文件夹(新建-其他-其他-文件夹),分别命名为secureAdmin和secureUser,一个是管理员的访问域,一个是普通用户的访问域。接下来将严格控制管理员和普通用户的访问权限,普通用户只能访问secureUser目录下的页面,而管理员则两个都可以访问。
3、在secureAdmin目录下创建一个名为pageA的HTML文件,内容如下:
<html>
<head>
<title>管理员安全域</title>
</head>
<body>
<h1>管理员安全域</h1>
</body>
</html>
同样的,在secureUser下创建一个名为pageU的HTML文件,内容为:
<html>
<head>
<title>普通用户安全域</title>
</head>
<body>
<h1>普通用户安全域</h1>
</body>
</html>
4、在WEB页目录下创建主页index.jsp,将<body>标签中的内容覆盖为:
<p>访问管理员页面:<a href="secureAdmin/pageA.html">这里!</a></p>
<p>访问普通用户页面:<a href="secureUser/pageU.html" >这里!</a></p>
5、在GlassFish中添加用户权限。
首先,展开服务-服务器,选择GlassFish V2,右键-启动。(如果没看到有GlassFish,请安装后点击“添加”)。
然后,打开浏览器,输入网址http://localhost:4848访问GlassFish的管理员平台,默认用户是admin,密码是adminadmin。
接下来,展开 配置-安全性-领域,选择file,如下图所示:
在主窗口打开的页面中,点击“管理用户”按钮,进入用户管理页面,点击新建,创建一个管理员用户,用户名为admin,密码也是admin,如下图所示:
同样地,创建一个用户user,密码是user。创建完毕后如下图所示:
至此,GlassFish下的用户权限已经配置完毕,接下来,我们需要在应用程序的配置文件中添加一些配置来使用这两个用户。
6、打开WEB-INF目录下的web.xml,点击“安全”选项卡,展开“登陆配置”,选择“基本”,在“域名称”中填入 file,如下图所示:
展开“安全角色”,点击“添加”,“角色名称”中填入Admin,同样的方法,添加一个角色名称为User的角色,如下图所示:
在 “安全约束”选项下,点击“添加安全约束”,“显示名称”中填入AdminConstraint,在“Web资源集合”选项下点击“添加”,“资源名称” 为Admin,URL模式为“/secureAdmin/*”,表示Admin这个资源集合映射到secureAdmin下的任何页面,如下图所示:
选中“启用验证约束”,编辑“角色名称”,将Admin添加到右边的框中,如下图所示:
完成如下:
同样,创建一个显示名为UserConstraint的安全约束,资源集合中的资源名称为User,URL模式为/secureUser/*。注意角色名称应该Admin和User都选择(管理员和普通用户均可进入)。如下图所示:
7、最后,在sun-web.xml中添加WEB应用定义的安全资源与GlassFish上的用户的映射。打开WEB-INF下的sun-web.xml,点击“安全”选项卡,点击“添加安全角色映射”,在“安全角色名”中填入Admin,添加主要用户,主要用户名称为admin。同样,创建一个名为User 的安全角色,并添加主要用户名为user的主要用户,如下图所示:
8、部署,运行项目,如下图所示:
点击管理员页面,如下图所示:
如果你使用的是IE浏览器,会这样:
如果用admin来登陆,将跳转到pageA页面,如果用user来登陆,则遭到拦截:
如果你不希望使用“基本认证”来接受用户输入,你也可以自己写一个表单来接受用户输入:
<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>
在web.xml的安全选项中的登陆配置里选中“窗体”,然后选择登陆页面和登陆错误的页面即可。
Demo来源:http://www.netbeans.org/kb/60/web/security-webapps.html#Basic_login_config
2009-04-30
glassfish中配置JDBCRealm
关键字: glassfish realm
A、设置数据库(数据库以SQL SERVER2005为例)
1、安装SQL SERVER 2005
2、安装JDBC驱动 可以到微软下载
3、把驱动放入<glassfish安装目录>\domains\<你自己的域>\LIB\EXT\ 目录下
4、给服务器添加驱动
点属性----》
点添加 JAR/文件夹---》找到所需的SQL驱动就可以了
B、设置数据库资源池
1、进入glassfish安装目录
2、CTRL+F
3、搜索MICROSOFT(其实很多的样板配置可以在这里找到)
4、在NETBEANS中打开是下面这个模样
已经说过了 ,上面的只是样板,告诉你配置对应的数据库需要配置什么内容而已,不同的数据库可以在该文件对应的目录下找到配置样板
接下来就进入服务器的控制台了
5、你可以通过直接在浏览器中键入http://localhost:4848登陆,也可以在第一张图片上点击“查看管理控制台”菜单进入,当然这个需要帐号密码,对于glassfish-v2的帐号与默认密码分别是admin与adminadmin
6、登陆后进入资源
7、真正开始配置连接池了
8、上面填好了点Next按钮
9、完成下面的内容
10、配置好后看能不能PING通,重新打开它,点PING钮,看是否PING通
PING通就继续下面的内容
C、设置JDBC RESOURCES
这个内容比较简单
数据库部分的配置已经完成了,接着配置JDBC域
D、配置JDBC REALM
1、配置安全映射,否则因为缺少principle而出现验证后403错误
接着就是内容了:
点击 Save以保存
E、准备好登陆页面与错误页面
登陆页面的要求是具有action="j_security_check" form,用户名的输入框 的 name="j_username" ,密码框的name="j_password",当然还需要个提交按钮,我们把它起名为login.html(或者其它页面形式,只要满足上面的条件就可以了)
把他们放到应用的web目录中
F、配置web.xml
保存
配置完成