JAAS:JAVA的认证和权限系统,是JDK级的,并且属于J2EE的规范之一,容器必须要实现的。
作用就要规范外部(对于J2EE程序,外部指浏览器客户端,对于J2SE程序,外部指调用程序)如果要作用JDK里面的东西时的情况。
认证:
- 把验证代码写在LOGINMODULE的实现类的login()方法中
- 通过配置文件和加JAVA_OTPS的方式告诉JDK类全名
- 告诉JDK需要使用认证的地方
如果是J2SE的程序,在需要认证的地方加上LOGINCONTEXT的login(),JDK会回调上面的login()方法,不通过则抛出excetion,通过则将客户端相关信息保存到SUBJECT中;
如果是J2EE程序,则在WEB.XML中配置相应元素,容器会回调上面的login()方法,如果不通过则导到登录页面,通过则将客户端相关信息保存到SUBJECT中
验证权限:
- 写好权限策略内容:以PRINCALS为单位,列出这个PRINCALS能做的事:PERMISSION子类列表,PERMISSION子类实现了要保护的对象,关键识别参数,操作保护方法,保存为策略文件
- 把涉及到保护对象操作的代码放到PrivilegedAction实现类的run()方法内
- 通过配置文件和加JAVA_OTPS的方式告诉JDK资源文件全名,策略文件全名和需要启用SECURITY MANAGER
- 在需要验证权限的地方,调用Subject.doAsPrivileged(Subject, PrivilegedAction, null),JDK或容器根据策略文件该SUBJECT是有操作要保护对象的权限,没有则则抛出excetion,有则执行
相关实例可参照
http://download.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/GeneralAcnAndAzn.html