关于Jaas的探讨

这两天根据需要,从Oracle 上阅读了整篇关于Jaas技术的详情,这里对Jaas进行了整理。

Jaas主要负责的是 Authentication 和 Authorization。主要分为三个部分:

Common公共部分,Authentication 部分以及 Authorization 部分。

Common公共部分主要是Subject,Principal,Credential。

Subject :

在授权之前,需要对请求的来源加以认证,Jaas定义了Subject表示请求的来源。一旦Subject认证成功,将会在Subject中增加相关的身份信息或者是Principal。一个Subject会有多个Principal,例如一个人可以有名字的Principal,或者身份的Principal。Subject也有与自己相关的安全属性称之为Credential。加密的私钥被存储在私有证书集合中,而公钥证书存储在公钥证书集合中,访问和修改不同证书的集合需要不同的权限。

Principal :

如上所说,当一个Subject认证成功,Principal将会关联到这个Subject。Principal表示Subject的身份表示,必须要实现 java.security.Principal 和 java.io.Serializable 接口。Subject section 描述了更新Principal关联到subject的方法。

Credential :

并不是主要的Jaas代码,任何类可以表示为Credential,并需要实现Credential的两个接口Refreshable和Destroyable。

Authentication 部分:

验证一个Subject需要如下的步骤:

1.应用程序初始化一个LoginContext实例。

2.LoginContext查阅Configuration以加载为该应用配置的所有LoginModule。

3.应用程序调用LoginContext的login方法。

4.login方法调用所有加载的LoginModule方法,每个LoginModule尝试验证Subject。成功后LoginModule会把Principal和Credential与被验证的Subject关联到一起。

5.LoginContext将认证的状态返回给应用程序。

6.如果认证成功,应用程序将从LoginContext中检索出Subject。


LoginModule :

LoginModule接口为开发人员提供了实现不同种类身份验证技术的能力,这些技术可以在应用程序中插入。

CallbackHandler :


Callback :

Authorization部分:

授予访问控制权限不仅基于哪些代码正在运行,还取决于谁在它下面运行,以下是必须的:

用户必须经过身份验证,如LoginContext部分所述。

如Subject部分所述,身份验证结果的Subject必须与访问控制上下文相关联。

必须在安全策略中配置基于委托人的条目。


以下根据说明文档创建了一个Jaas的示例程序,程序目录如下:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值