当公司网络外部的用户需要访问你编写的应用程序或受安全保护的资源时,平衡应用程序的开放性和安全性之事就非常复杂。
很多 Java 程序员为他们的应用程序创建自己的安全模块。大多数这些模块都是针对具体的应用程序的,这样在下一个应用程序需要安全保护时,程序员必须重新开始所有工作。构建自己的安全模块的另外一个缺点是,在应用程序变得越来越复杂时,安全需求也会变得很复杂。
Java 验证和授权服务(Java Authentication and Authorization Service,JAAS)
使用 Java 验证和授权服务(JAAS) API 可以避免这些问题(或者说至少可以明显地降低为你的应用程序实现安全性的影响),JAAS 是标准 Java 发布的一部分。
JAAS 能够实现像样的应用程序必须提供的两个特性:验证和授权。
验证(Authentication)意味着验证一个用户的身份。使用不同的机制,有两种方法可以实现验证,可使用的不同机制包括认证(certification),现有的验证方案,数据库等。JAAS 的验证部分是可插入的,所以你可以在运行时期配置应用程序,根据需要使用验证。
JAAS 的授权(authorization)组件决定一个授权的用户可以访问哪些资源。这个授权方案是基于角色和原则的。
开发人员可以将 JAAS 应用到独立运行的应用程序:Web 应用程序、EJB 以及你所创建的相当多的任何类型的 Java 应用程序。API 的灵活性和开放性在一开始很难理解。但是如果你使用一个应用程序服务器,那么这个应用程序服务器可能已经使用了 JAAS 模块,你可以用它来管理应用程序的安全性。
当下一次你的应用程序需要安全性时,不妨考虑一下 JAAS能否为你节省时间和精力。如果你已经在使用一个 J2EE 或 servlet 容器,那么检查一下它的 JAAS 能力。即使 JAAS 的学习曲线很陡峭,但其长度还是很短的,而且学会它用处也是很大的。