关于JAAS概念性的东西我就不自己写了,主要内容大部分来自Sun的官方资料《java_security2》。关于Jboss的安全性配置的基本内容也来自Jboss的资料,所以这部分的资料完全都是转贴,请不要见怪,因为在介绍更高级的应用之前必须先介绍这方面的内容。
Java 鉴别与授权服务(JAAS)
JAAS(Java Authentication and Authorization Service)可以在Java 平台上提供用户身份鉴别。在Java 平台上,其功能是独一无二的。
Java 安全设计的所有核心功能都是为了保护终端用户不受程序开发者的影响,由于终端用户为了使用开发者提供的程序,不得不满足其对本地资源的存取要求,这就要求必须保证用户不受到程序的影响。另一方面,JAAS 允许开发者根据用户提供的鉴别信任状(credential)准许(或拒绝)用户对程序的访问。
JAAS 可由 http://java.sun.com/products/jaas/ 下载。它包括两部分: 一部分是Java类库,其中定义了服务接口(JAAS 固有的),另一部分为平台专用的模块,其作用是实现授权(JAAS 模块)。此外还可以获得模块样例,从而在JNDI 目录服务、Windows NT 登录服务和Solaris 登录服务基础上实现鉴别。
JAAS 本身包括文档和一个lib 目录,其中只有一个jar 文件(jaas.jar)。可以将此jar 文件安装到$JREHOME/lib/ext 中,用户也可以将它放在类路径指定的目录下。JAAS模块的lib 目录中包括另一个jar 文件(jaasmod.jar),对其处理方法与jaas.jar类似。
Jboss安全性配置
J2EE定义了应用中指定安全性约束的机制,但并没有给出具体服务器是如何实现和配置认证和访问控制机制(译者注:授权)的。JBoss使用了JAAS以提供集成不同认证技术的可插入方式,供应用的认证和授权使用。同时,JBoss还提供了一套标准模块,即基于文件、数据库、LDAP的安全性机制。其中,基于文件的方式最为简单。用户可以使用现有的认证模块,或者可以开发更适合自身需求的认证模块。
Jboss安全性域信息存储在login-config.xml文件中,其包含了许多安全性域定义。各个安全性域指定了许多JAAS3登陆模块,供安全性域认证使用。当用户需要在应用中使用安全性时,需要在JBoss特定部署描述符jboss.xml或jboss-web.xml中指定待使用的安全性域名。本节将快速地带领用户分析如何保护随JBoss发布的JMX控制台和Web控制台应用。
通过JMX控制台基本上能够控制JBoss服务器的各个方面,因此保护该控制台很重要,至少需要通过密码来保护它。否则,任何远程用户将能够完全控制用户的JBoss服务器。为实现此目的,本文将安全性域添加给JMX控制台应用。通过server/default/deploy/jmx-console.war/WEB-INF/目录能够找到待修改的JMX控制台文件,即jboss-web.xml。将jboss-web.xml中security-domain的注释去掉,具体如下。
<jboss-web>
<security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
这将设置Web应用待使用的安全性域,但还未确定Web应用应该使用的安全性策略。待保护的URL是什么,相应的访问角色又是哪些?为配置这些内容,用户需要在同一目录中找到web.xml文件,然后将security-constraint的注释去掉。其中,该安全性约束要求登陆用户必须具有JBossAdmin角色。
<!--
A security constraint that restricts access to the HTML JMX console
to users with the role JBossAdmin. Edit the roles to what you want and
uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
secured access to the HTML JMX console.
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>
An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
太好了,但是用户名和密码来自哪里呢?不错,它们来自jmx-console安全性域。通过conf/login-config.xml文件能够看到。
<application-policy name="jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required">
<module-option name="usersProperties">
jmx-console-users.properties
</module-option>
<module-option name="rolesProperties">
jmx-console-roles.properties
</module-option>
</login-module>
</authentication>
</application-policy>
上述配置使用了基于简单文件的安全性策略。其中,登陆JMX控制台应用的用户名和密码存储在jmx-console-users.properties中,并且以“username=password”形式给出。为了将用户添加到JBossAdmin角色中,需要将“username=rolename”形式给出的用户和角色映射关系给出在jmx-console-roles.properties文件中。现存的文件创建了admin用户,其密码为admin。用户可能删除该用户,或者更改其密码,使得JMX控制台应用更安全。
当更新了web.xml时,JBoss会重新部署JMX控制台应用。用户可以通过服务器控制台检查JBoss保存了对web.xml所作的修改。如果用户正确地配置了上述各个任务,并且重新部署了JMX控制台应用,则下次访问它时,JBoss会要求用户提供用户名和密码。
JMX控制台应用不是JBoss唯一提供的、基于Web的管理界面。JBoss还提供了另一管理应用,即Web控制台(参考附录A)。尽管Web控制台是基于Java Applet形式给出的,但是对应的Web应用还是可以类似于JMX控制台的方式来保护它。其中,Web控制台应用位于default/deploy/management/web-console.war。注意,这同JMX控制器应用有所区别,因为JMX控制器应用是以目录形式展开的。因此,编辑web-console.war WAR存档更费力些。
配置Jboss安全性域
通常,用于Web和EJB层的、标准的J2EE安全性声明需要借助于web.xml和ejb-jar.xml部署描述符指定。然而,为配置使用JBoss安全性,开发者还需要提供JBoss专有的部署描述符。
通过JBoss具体部署描述符能够完成应用的安全性配置。为保护Web应用,用户需要将security-domain元素包含在jboss-web.xml中。
<jboss-web>
<security-domain>java:/jaas/dukesbank</security-domain>
...
</jboss-web>
如果需要在EJB层实现访问控制,则用户也可以对jboss.xml文件添加同样的security-domain元素。
<jboss>
<security-domain>java:/jaas/dukesbank</security-domain>
<enterprise-beans>
...
</enterprise-beans>
</jboss>
这将意味着,JBoss会在JNDI名“java:/jaas/dukesbank”下为Duke银行应用绑定安全性管理器实例。所有的安全性域配置在java:/jaas上下文,因此Duke银行应用实际上使用了dukesbank安全性域。
用户通过conf/login-config.xml文件能够配置它。但是,如果浏览Duke银行应用,并不能够找到dukesbank安全性域。一旦JBoss寻找不到相应的安全性域,则它会使用other域。其中,other域的具体配置如下。
<application-policy name="other">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required" />
</authentication>
</application-policy>
此处,登陆模块使用本地属性文件来认证应用。JBoss借助于两个文件进行认证工作。其一,提供用户名、密码;其二,提供角色。比如,如下是Duke银行应用的users.properties。
# users.properties file for use with the UsersRolesLoginModule
# Format is:
#
# username=password
200=j2ee
属性文件的格式非常简单。各行采用username=password的形式。因此,上述文件定义了200用户,其密码为j2ee。这就是用户访问Duke银行应用的帐号。如果用户修改了上述密码,则需要重新部署Web应用。
当然,用户名和密码不是驱动J2EE应用安全性的唯一因素。部署者需要将用户指定角色,因此应用会根据用户的角色信息来决定用户是否有权访问目标资源。只有是Duke银行应用的客户才有权访问它,即通过bankCustomer角色。下面给出了roles.properties文件,用于指定200用户的角色。
# A roles.properties file for use with the UsersRolesLoginModule
#
# Format is
#
# username=role1,role2,role3
200=bankCustomer
为让Duke银行应用使用dukesbank安全性域,而不是使用服务器提供的默认安全性域,开发者还需定义出dukesbank安全性域。因此,开发者需要往conf/login-config.xml文件中添加如下内容:
<application-policy name="dukesbank">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required" />
</authentication>
</application-policy>
注意,需要重启JBoss,否则修改后的login-config.xml不会生效。
使用RDBMS实现安全性
实际应用中,将用户、角色信息存储在数据库中很常见。JBoss提供了称之为DatabaseServerLoginModule的登陆模块,用户只需要做少许的配置即可使用它。用户需要提供如下内容:
分享到:
相关推荐
PC间用ACL和TRP协议
基于西门子S7-1200PLC的立体车库创新设计:融入新能源汽车充电元素,简约而不简单的智能化方案,基于西门子S7-1200PLC的立体车库设计设计 针对古老传统的立体车库进行创新,引入当下流行的新能源汽车充电元素,简约而不简单 包含:程序,图纸,仿真 ,关键词:基于西门子S7-1200PLC; 立体车库设计; 创新; 新能源汽车充电元素; 简约设计; 程序; 图纸; 仿真。,基于新能源充电的西门子S7-1200PLC立体车库创新设计:程序、图纸与仿真,简约而不凡
陕西省国家级非物质文化遗产经纬度数据统计表 统计内容包含以下字段: 1. 项目名称 2. 遗产类别 3. 入选批次 4. 所属地区 5. 申报地区/单位 6. 保护单位 7. 地理经度 8. 地理纬度 该统计表系统记录了陕西省国家级非物质文化遗产的地理空间信息,为文化遗产的数字化保护与研究工作提供了重要的数据支撑。
GBT27023复习备考
vivado MIPS32五级流水CPU设计
基于MBD开发手册的《Application Modeling Guideline:辅助驾驶系统中的数学模型设计与应用》,Application Modeling Guideline 文档57页 基于MBD开发手册包含: 1. MBD概述:文档可能会介绍MBD的基本概念,解释为什么它在辅助驾驶系统开发中至关重要。 MBD允许工程师使用数学模型来描述系统行为,这有助于早期发现问题,减少硬件原型制作的需求。 2. 工具选择:在辅助驾驶开发中,常用的MBD工具有MATLAB Simulink、MathWorks的Simulink Design Verifier、Vector的CANoe等。 文档可能涵盖这些工具的特点和适用场景,帮助开发者选择合适的工具。 3. 模型设计:MBD的核心是模型设计,文档会详细说明如何创建和组织模型结构,包括输入 输出接口定义、状态机设计、算法实现等。 对于辅助驾驶系统,这可能涉及到视觉处理、传感器融合、路径规划、决策制定等多个模块。 4. 仿真与验证:MBD工具支持动态仿真,开发者可以运行模型以验证其功能。 文档会介绍如何设置仿真条件,进行时序分析,以及如
LabVIEW曲线处理与包络线判断功能:准确判断,附带Demo及完整源码,labview做的曲线处理,包络线判断功能,判断准确。 一个demo,有源码 ,Labview曲线处理; 包络线判断功能; 判断准确; 有源码Demo; 包络线功能Demo; 准确度。,LabVIEW曲线处理与包络线精准判断功能Demo源码分享
2021年06月Scratch三级实操
GBT27067复习备考
基于nRF905的实验室温湿度监测系统研究.pdf
2022年12月机器人六级理论
Unity Shader Graph 2D - 角色身上部件高亮Bloom效果
大四-校内实习第四天(五)
2020年09月机器人五级实操
springboot停车场管理系统,含有完整的源码和报告文档
基于MPC模型预测算法的轨迹跟踪控制研究:双仿真比较及侧偏角软约束的重要性分析,基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮侧偏角的软约束控制,通过carsim与simulink联合仿真发现加入侧偏角软约束在进行轨迹跟踪时,能够通过控制四轮侧偏角的变化,较好的实现轨迹跟踪;而不加入侧偏角软约束的,发现车辆由于失去稳定性, 轨迹跟踪失败( 该仿真是学习mpc模型预测算法控制和基于车辆动力学轨迹跟踪控制非常好的学习资料)。 文件中参考文献和文件说明。 ,基于mpc模型预测轨迹跟踪控制; 四轮侧偏角软约束; 车辆稳定性; 轨迹跟踪失败; carsim与simulink联合仿真; mpc模型预测算法控制; 车辆动力学轨迹跟踪控制。,MPC模型预测轨迹跟踪控制:侧偏角软约束与车辆稳定性的联合仿真研究
基于扩展卡尔曼滤波算法的车辆多状态精确估计与仿真研究:融合位置、轨迹、速度及加速度的实时动态监测,基于扩展卡尔曼滤波EKF的车辆状态估计 估计的状态包括: 1. 车辆的横纵向位置 2.车辆行驶轨迹、横摆角、 3. 车速、加速度、横摆角速度 4. 相应的估计偏差。 内容附带:Simulink模型与MATLAB代马,以及参考文档。 ,基于扩展卡尔曼滤波; 车辆状态估计; 横纵向位置估计; 行驶轨迹估计; 横摆角估计; 车速估计; 加速度估计; 横摆角速度估计; 估计偏差; Simulink模型; MATLAB代码; 参考文档。,"基于扩展卡尔曼滤波的车辆多状态估计系统及其偏差分析:Simulink模型与MATLAB代码实现"
"基于V-REP与MATLAB联合仿真的小车项目:循迹、避障、走迷宫及路径规划的详细代码与文档说明匹配版",V-REP小车项目+匹配文档,基于V-REP与MATLAB联合仿真,小车能够完成循迹、避障、走迷宫和路径规划,提供详细代码和文档说明。 ,核心关键词:V-REP小车项目; 匹配文档; 联合仿真; 循迹; 避障; 走迷宫; 路径规划; 详细代码; 文档说明。,V-REP小车项目:循迹避障与路径规划联合仿真实现
2022年7月环境管理体系基础