Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。Java早期的安全框架强调的是通过验证代码的来源和作者,保护用户避免受到下载下来的代码的攻击。JAAS强调的是通过验证谁在运行代码以及他/她的权限来保护系统面受用户的攻击。它让你能够将一些标准的安全机制,例如Solaris NIS(网络信息服务)、Windows NT、LDAP(轻量目录存取协议),Kerberos等通过一种通用的,可配置的方式集成到系统中。 你是否曾经需要为一个应用程序实现登录模块呢?如果你是一个比较有经验的程序员,相信你这样的工作做过很多次,而且每次都不完全一样。你有可能把你的登录模块建立在Oracle数据库的基础上,也有可能使用的是NT的用户验证,或者使用的是LDAP目录。如果有一种方法可以在不改变应用程序级的代码的基础上支持上面提到的所有这一些安全机制,对于程序员来说一定是一件幸运的事。现在你可以使用JAAS实现上面的目标
这是网上介绍的JAAS
如红体字所言
JAAS就是一个实现登录模块的么?
就好比我们登录CSDN一样要账号密码看了一早上的JAAS
知道了一点JAAS结构和核心类,接口
但发现最基本的JAAS是干什么的倒没弄清楚
望高手不吝赐教啊
这是网上介绍的JAAS
如红体字所言
JAAS就是一个实现登录模块的么?
就好比我们登录CSDN一样要账号密码看了一早上的JAAS
知道了一点JAAS结构和核心类,接口
但发现最基本的JAAS是干什么的倒没弄清楚
望高手不吝赐教啊
解决方案 »
- 用抽象类还是接口好呢
- JAVA 二维数组里面找单位矩阵
- 我对String的一些见解(看了JAVA面试题解惑系列(二)——到底创建了几个String对象?之后)
- replaceAll("<br\\s*/?>|<p\\s*/?>|[\\s\\n]", "");请问这是什么意思?
- 小弟在使用三目运算符时不得要领,老是出错,请各位进来指点一二.
- 已经工作的大哥们,进来看下
- JAVA,ORCALE配置要求,最近要买笔记本,散分!!!
- 此题没看出哪里越界了
- 菜鸟又来提问了,高手必进
- 请问在JAVA中有没有提供对C或C++接口的访问
- applet 的getImage怎么得不到图片呢?
- 关于encache!!!
意思是不是说:
运行你写的代码的时候得通过身份验证
也就是说别人没办法运行你的代码
除非别人知道你的账号密码是这样么?
旧的jaas仅用于验证代码的来源即所谓codesource,这是因为早期java就是用于网络,大量从网络来的代码必须强化安全方面。
但是jaas规范比较蹩脚,虽然是宫力设计的,而且属于java语言的核心,大量java语言内部的操作都涉及到,和java语言方方面面都有很大关联。
至今jaas的落后和蹩脚没什么改观。
package samples;import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import com.sun.security.auth.callback.TextCallbackHandler;public class CountFiles { static LoginContext lc = null;
public static void main(String[] args) {
//使用配置文件中名字为“CountFiles”的条目
try {
lc = new LoginContext("CountFiles",
new TextCallbackHandler());
} catch (LoginException le) {
le.printStackTrace();
System.exit(-1);
} try {
lc.login();
//如果没有异常抛出,则表示认证成功
} catch (Exception e) {
System.out.println("Login failed: " + e);
System.exit(-1);
} //以认证用户的身份执行代码
Object o = Subject.doAs(lc.getSubject(), new CountFilesAction());
System.out.println("User " + lc.getSubject( ) + " found " + o + " files.");
System.exit(0);
}
}
可以看出,主程序包含了三个重要的步骤:首先构造一个LoginContext对象,然后使用这个对象进行登录,最后,把用户作为doAs方法一个参数。另一部分表示用户想要执行的具体操作,源程序如下:package samples;import java.io.File;
import java.security.PrivilegedAction;class CountFilesAction implements PrivilegedAction {
public Object run() {
File f = new File(".");
File[] files = f.listFiles();
return new Integer(files.length);
}
}