技术开发 频道

什么是JAAS,以及灵活的Java安全机制

  下面列出了在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对象从系统和用户那里收集必要的验证信息,同时独立于实际的收集信息时发生的交互过程。

  JAAS在javax.sevurity.auth.callback包中包含了七个Callback的实现类和两个CallbackHandler的实现类:

  ChoiceCallback、ConfirmationCallback、LogcaleCallback、NameCallback、PasswordCallback、TextInputCallback、TextOutputCallback、DialogCallbackHandler和TextCallBackHandler。Callback接口只会在客户端会被使用到。我将在后面介绍如何编写你自己的CallbackHandler类。

0
相关文章