background image

 

关于 JAAS 和 JSSE 实现 Java 安全性

JAAS   

和 JSSE 概述

  JAAS 提供了一种灵活的、说明性的机制,用于对用户进行认证并验证他们访问安全
资源的能力。JSSE 定义了通过安全套接字层(SSL)

 

进行安全 Web 

 

通信的一种全 Java 的

机制。通过结合这两种技术,可以使我们的应用程序:
  验证用户就是他或者她所宣称的那个人(认证)。
  保证允许他或者她访问所要求的资源(授权)。
  通过安全网络连接进行完整的信息交换(传输)。
  现在,我们来看每一个基础的功能组件。

 

  用 JAAS 进行认证
    JAAS   建 立 在 一 种 称 为 可 插 入 的 认 证 模 块 (Pluggable   Authentication 
Module,PAM)的安全体系结构之上。PAM 

 

的体系结构是 模块化的,这意味着它设计为

可以通过交换模块,支持从一个安全协议组件无缝地转换到另一个协议组件。这个框架中
定义良好的接口使得无需改变或者干扰任何现有的登录服务就可以加入多种认证技术和
授权机制。PAM 

 

体系结构可以集成范围广泛的认证技术,包括 RSA、DCE、Kerberos 以

 

及 S/Key

 

,因而 JAAS 也可以集成这些技术。此外,这个框架与基于智能卡的认证系统和 

LDAP 认证兼容。

 

  就像许多 Java 2 平台技术一样,JAAS API 定义了应用程序代码与将要执行业务逻
辑的物理实现之间干净的抽象。这个抽象层不用重新编译现有的应用程序代码就可以作为

 

登录模块的运行时替代。特别是,应用程序写到 LoginContext API,而认证技术提供程

 

序则写到 LoginModule 

 

接口。在运行时, LoginContext 将读取配置文件以确定应使用

哪一个(一些)登录模块对访问特定应用程序的用户进行认证。
  JAAS 所使用的认证方案以两种非常重要的实体为基础:principal   

和 subject。实际

 

被认证的人或者服务称为 subject  

。 principal 是一个惟一的实体,比如个人或者组的名

 

字、帐号、社会安全号或者类似的惟一标识。为了惟一标识一个 subject(这是认证的关键
部分)

 

,一个或者多个 principal 

 

必须与这个 subject 

 

相关联。最后,一个 subject 可能

 

拥有安全相关的属性,称为 凭证(credential)。凭证可以是从简单的密码到复杂的加密密
钥的任何东西。

 

  应用程序通过实例化一个 LoginContext 

 

对象开始认证过程。 LoginContext 查询

一个配置文件以确定进行认证所使用的一种(或者多种)认证技术以及相应的一个(或者多
个) LoginModule 

 

。一个非常简单的 LoginModule 可能会提示输入用户名和密码并对它

们进行验证。高级一点的可能会使用现有的操作系统登录身份进行身份验证。理论上,甚

 

至可以将一个 JAAS LoginModule 构建成与指纹识别器或者虹膜扫描仪交互。

 

  用 JAAS 进行授权

 

  认证只是 Java 安全框架任务的一半。当用户的身份被确认后,必须对他或者她的访
问权限进行检查。只有确认了适当的权限后,用户才可以访问安全的系统或者资源。

 

  换一种说法,验证了用户或者服务的身份后,就创建一个 Subject 对象来表示经过

 

验证的实体。然后 JAAS 将这个对象传递给任何为保护对敏感系统或资源的访问而建立的