学习笔记——JAAS

原创 2012年03月22日 23:58:35

Java Authentication Authorization Service(JAAS, Java认证和授权服务)

JAAS作用:解决Java EE应用的安全问题。

JAAS支持两种方式的安全性控制:声明式安全控制(declarative security),编程式安全控制(programmatic security)。

开发者可以使用XML部署表述文件或Annotation来声明安全控制,当声明式安全控制不足时,可采用编程式。

 

JAAS相关的概念

用户:通常由用户名,密码信息提供。

用户组:用户的集合。应用程序使用ACL(Access Control List)管理用户和用户组的权限。

安全域:为Web或应用程序提供的安全策略,其是包括用户、用户组的一个集合。应用服务器中最长见的安全域是:RDBMS安全域(各种信息都存储在数据库中,适合大型应用使用)、文件安全域(信息存储在文件中,适用于小型应用,用户小于1000)。

角色:一个角色一个抽象的名字,用于在应用中访问指定的资源的授权。

 

JAAS的工作流程

1:初始化请求

2:初始化认证

3:URL授权

4:完成原来的请求

5:调用EJB的方法

 

Web中的使用

声明式安全控制

使用方法:

为整个应用声明安全性角色;

指定Web中受保护的资源,并指定授权访问被保护资源的角色;

指定登入方式。

 

可在web.xml中声明,

也可以用Java EE提供了javax.annotation.security包。

e.g.

web.xml

<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
	
		<!-- 声明安全性角色 -->
		<security-role>
			<role-name>rolename</role-name>
		</security-role>
		
		<security-constraint>
			<!-- 指定收保护的Web资源集 -->
			<web-resource-collection>
				<web-resource-name>resource</web-resource-name>	
				<url-pattern>/*</url-pattern>
				<url-pattern>/context/*</url-pattern>
				
				<!-- http-method子元素用于指定只保护指定请求方式的资源 -->
				<!--
				<http-method>GET || POST</http-method>
				-->
			</web-resource-collection>
		
			<auth-constraint>
				<!-- 访问受保护资源所需的角色 -->
				<role-name>rolename</role-name>
			</auth-constraint>
		</security-constraint>
		
		<login-config>
			<!-- 指定登录方式 BASIC:使用对话框来登录,FORM使用自定义的表单页登录 -->
			<auth-method>BASIC</auth-method>
			<realm-name>myRealm</realm-name>
			
			<!--
			<auth-method>FORM</auth-method>
			<realm-name>myRealm</realm-name>
			<form-login-config>
				<form-login-page>/login.jsp</form-login-page>
				<form-error-page>/login_fail.jsp</form-error-page>
			</form-login-config>
			-->
		</login-config>
		
</web-app>

之后该为这些角色映射到服务器的用户组上.

并且配置和管理服务器上的用户和用户组,WebLogic可以在“安全领域”中配置,JBoss需在%JBOSS_HOME%/server/default/conf/login-config.xml文件中进行管理。

 

应用服务器特定的配置文件示例:

/WEB-INF/jboss-web.xml

 

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE jboss-web PUBLIC
	"-//JBoss//DTD Web Application 5.0//EN"
	"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
	<!-- 指定该Web应用使用哪个安全域(java:/jaas/是特定前缀) -->
	<security-domain>java:/jaas/rolename</security-domain>
	<context-root>basic</context-root>
</jboss-web>


/WEB-INF/weblogic.xml

 

<?xml version="1.0" encoding="GBK"?>
<weblogic-web-app>
	<!-- 将安全角色映射到服务器上的用户组 -->
	<security-role-assignment>
		<role-name>rolename</role-name>
		<principal-name>userGroup</principal-name>
	</security-role-assignment>
</weblogic-web-app


 

编程式安全控制

Web应用的编程式安全控制是通过HttpServletRequest实现的,主要使用该接口的如下3个方法:

String getRemoteUser():返回这个请求的登录用户的用户名,若未登录,则返回null;

Principal getUserPrincipal():返回登录后的身份主体,该对象包含当前用户的用户名;

bealoon isUserInRole(String role):判断用户是否为指定角色。

 

EJB中使用EJBContext来实现,该接口提供如下2个方法:

Principal getUserPrincipal():返回登录后的身份主体,该对象包含当前用户的用户名;

bealoon isUserInRole(String role):判断用户是否为指定角色

Jaas原理及实现

JAAS是对JCE安全框架的重要补充,通过提供认证用户和确定用户授权来增强JAVA解决方案的动态安全性,使得资源能够得到很好得到保护和控制(JAAS使用动态的安全策略来定义权限,而不是将其静态的嵌入到...
  • Jesse621
  • Jesse621
  • 2015年01月30日 11:54
  • 2566

cas 入门之三十一:cas 认证处理器-JAAS配置示例

关于cas 的jaas认证,有之前定过一写过一篇,但是那篇没有详细的描述其中的配置情况,况且也有错误,在此对大家表示歉意。 下面我将以前作的demo,整理成本文,也算是对前一篇的补充。 对于cas...
  • zhurhyme
  • zhurhyme
  • 2014年09月19日 21:08
  • 2707

ActiveMQ 基于JAAS的安全机制

ActiveMQ版本 :5.9 ActiveMQ支持可插拔的安全机制,用以在不同的provider之间切换。 JAAS认证插件 JAAS(Java Authentication and Au...
  • sunshine_love
  • sunshine_love
  • 2015年03月07日 19:42
  • 1960

JavaSecurity和JAAS——Java标准安全体系概述(下)

java标准安全体系分为两大部分,一个是在JDK1.0引入并在JDK2进行了重构的代表着以代码为中心的授权体系。此体系下,关注的重点在于“这段代码能访问哪些系统资源”;另一个是在JDK1.3以扩展的形...
  • m0_37962779
  • m0_37962779
  • 2017年11月01日 15:28
  • 129

Weblogic安全性编程在 Java 客户端中使用 JAAS 身份验证

原文地址:http://edocs.weblogicfans.net/wls/docs92/security/fat_client.html 本部分包含下列主题:  JAAS ...
  • boonya
  • boonya
  • 2015年01月06日 14:13
  • 1825

JAAS 是个什么梗

转载地址:https://www.cnblogs.com/youxia/p/java006.html 参考资料 该文中的内容来源于 Oracle 的官方文档。Oracle 在 Java 方...
  • program_developer
  • program_developer
  • 2017年12月13日 19:39
  • 31

Tomcat JAAS 身份验证和授权

ava 认证和授权服务(JAAS)是一种用于验证用户身份以确定安全等级的 Tomcat Realm ( org.apache.catalina.Realm)的实现。 需求 Tomcat 7.0...
  • bigtree_3721
  • bigtree_3721
  • 2016年03月13日 13:55
  • 593

java安全 ——JAAS(Java 认证和授权服务)开发指南

以下内容转自: http://lyb520320.iteye.com/blog/720478 【0】README 1)本文翻译自:http://java.sun.com/developer/tec...
  • PacosonSWJTU
  • PacosonSWJTU
  • 2016年02月21日 18:53
  • 1600

JAAS简单学习

Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。Java早期的安全...
  • xingqinstar
  • xingqinstar
  • 2013年06月09日 21:42
  • 312

Tomcat下的JAAS实例

创建文件login.jsp和error.jsp login.jsp的代码如下 [c-sharp] view plain copy        ...
  • bigtree_3721
  • bigtree_3721
  • 2016年03月13日 13:40
  • 405
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——JAAS
举报原因:
原因补充:

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