JAAS学习笔记

今天在项目中遇到了JAAS的问题,由于是第一次听这个概念,所以感到一脸茫然。通过看别的人博客以及逛论坛学习,现在终于可以说是知道点皮毛了,现分享给大家。

 

JAAS(Java Authentication Authorization Service)强调的是通过验证谁在运行代码以及他/她的权限来保护系统面受用户的攻击。它让你能够将一些标准的安全机制,例如Solaris NIS(网络信息服务)、Windows NT、LDAP(轻量目录存取协议),Kerberos等通过一种通用的,可配置的方式集成到系统中。

 

JAAS验证的步骤:

 

1、首先需要创建一个LoginContext的实例;

2、将一个CallBackHandler对象作为参数传给LoginContext;

3、调用LoginContext的login()方法,进行验证;

4、假如验证成功之后,可以选择LoginContext的getSubject()方法得到Subject做特殊处理。

 

来个直观点的:

LoginContext lc = new LoginContext("sampleModule.properties");
try {
lc.login();
} catch (LoginException) {
// Authentication failed.
}
// Authentication successful, we can now continue.
// We can use the returned Subject if we like.
Subject sub = lc.getSubject();
Subject.doAs(sub, new MyPrivilegedAction());

 

旁白:LoginContext首先读取sampleModule.properties,然后通过读取的数据决定加载哪个LoginModule对象;在登录时,LoginContext调用LoginModule对象的login()方法验证登录;每个login()方法进行验证操作或获得一个CallbackHandle对象;

CallbackHandle对象通过使用一个或多个CallBack方法同用户进行交互,获得用户输入。

 

下面列出了在LoginContext中经常使用的三个方法:
  login () 进行登录操作。该方法激活了配置中制定的所有LoginModule对
象。如果成功,它将创建一个经过了验证的Subject对象;否则抛出LoginException
异常。
  getSubject () 返回经过验证的Subject对象
  logout () 注销Subject对象,删除与之相关的Principal对象和凭证
  验证:LoginModule
  LoginModule是调用特定验证机制的接口。J2EE 1.4中包含了下面几种LoginModule
的实现类:
  JndiLoginModule 用于验证在JNDI中配置的目录服务
  Krb5LoginModule 使用Kerberos协议进行验证
  NTLoginModul 使用当前用户在NT中的用户信息进行验证
  UnixLoginModule 使用当前用户在Unix中的用户信息进行验证
  同上面这些模块绑定在一起的还有对应的Principal接口的实现类,例如NTDomainPrincipal
和UnixPrincipal。这些类在com.sun.security.auth包中。
  LoginModule接口中包含了五个方法:
  initialize () 当创建一LoginModule实例时会被构造函数调用
  login () 进行验证
  commit () 当LgoninContext对象接受所有LoginModule对象传回的结果后
将调用该方法。该方法将Principal对象和凭证赋给Subject对象。
  
  abort () 当任何一个LoginModule对象验证失败时都会调用该方法。此时


没有任何Principal对象或凭证关联到Subject对象上。
  logout () 删除与Subject对象关联的Principal对象和凭证。
  在应用程序的代码中,程序员通常不会直接调用上面列出的方法,而是通
过LigonContext间接调用这些方法。
  验证:CallbackHandler和Callback
  CallbackHandler和Callback对象可以使LoginModule对象从系统和用户那
里收集必要的验证信息,同时独立于实际的收集信息时发生的交互过程。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值