作者:郭嘉
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell
在JARS认证过程中,客户端应用通过实例化LoginContext对象启动认证。然后,LoginContext与LoginModule通信,并由LoginModule执行实际的认证过程。由于LoginContex使用的LoginModule提供的通用接口,因此在运行时比较容易改变认证提供者,且无须对LoginGontext做任何修改。典型的Logi}ule将提示输人用户名/密码并对其进行验证,或者同其他认证提供者(如RSA SecurelD、智能卡、生物特征)交互。LoginModule使用CallbackHandler与客户端通信以执行用户交互,从而获得认证信息并通告登录进度和认证事件。
实现JAAS登录模块的步骤如下所示:
JAAS登录模块在属性文件JAVA_HOME/jre/lib/security/java.security中配置。要在J2SE环境中配置JARS登录模块,
为应用配里JAAS登录模块
可以使用JARS配置文件(如my-jaas.conf )为应用配置JAAS登录模块。JARS配置文件指定一个或多个用于认证的JAAS登录模块。该配置文件中的每一项都用应用名称标识,并包含为该应用配置的登录模块列表。每个登录模块都是由其全限定类名和一个认证标志值指定的,认证标志值可以控制整个认证行为。认证过程将按配置文件中指定的条目列表依次执行。下面是认证标志值的可能取值:
如果没有指定标志值Sufficient,则只有当所有Required和Requisite登录模块都成功了,整个认证才视为是成功的。如果没有指定任何Required或Requisite登录模块,则必须至少有一个Sufficient或Optional登录模块是成功的。除上述标志外,还可以使用名称一值对来指定模块特定的选项,这些选项可直接传递给底层登录模块。
在客户端实现JAAS认证的步骤如下所示:
JARS授权通过添加基于用户、组和角色的访问控制机制,从而增强了Java安全模型。它允许设置用
户级和操作级权限,以便对代码执行者实施访问控制。认证过程中创建的Subject对象代表一个已通过认证的实体。Subject对象通常包含一组Principal,其中每个Principal都代表一个应用的调用者。权限是使用策略授给Principal的。当登录的用户通过认证后,应用便根据用户的访问控制上下文将Principal和Subject对象关联起来。
实现JAAS授权步骤如下所示:
JAAS共享状态支持在多个认证模块之间共享安全凭证(如用户名/密码、共享秘密密钥等)。这允许在多个应用使用的登录模块之间共享安全凭证,从而实现到多个应用的SSDo JAAS提供一种共享状态机制,使登录模块能够将认证凭证放入共享映射(shared map)中,然后将其传递给配置文件中定义的其他登录模块。在典型的SS(〕场景中,多个应用必须使用统一的认证解决方案,使用户只需登录一次就可以访问多个应用。要在JARS中实现SSO,则必须在JARS配置文件中定义所有参与SSC)的应用使用的登录模块。登录模块可以使用配置文件中指定的sharedState参数,该参数可以确保任何登录模块的认证结果都能与其他登录模块共享。例如,当登录模块配置了sharedState时,将允许多个登录模块共享用户名和密码,从而确保用户只需输人一次密码就能通过多个登录模块的认证。
【Java安全技术探索之路系列:Java可扩展安全架构】之十六:JAAS(三):JAAS编程模型
原文地址:http://blog.csdn.net/allenwells/article/details/46517897