jaas 和 单点登陆问题

04-05-10 dkmilk
最近一个外包项目要求sso用jaas做,

以前我们都是用cookie来做单点登陆的。

于是我对jaas了解了一下。

一直没有明白jaas怎么做单点登陆。

我的理解是

jaas用于客户端服务器端安全认证。

如一个用户运行客户端。输入帐号密码(也可以直接用nt帐号密码进行认证,不用输入)

服务器端根据这个帐号和服务器端配置好的权限系统进行权限认证,保证客户端不越权操作服务器端一些东西。

我的问题是。我在一个应用是认证通过了。

然后我在别的应用中如何取得通过的用户信息?

单点登陆就是在一个应用中登陆,其它应用就不用登陆。他们的关系就是在其它应用中能取得该用户的信息。在jaas中能做到吗?

望高手解答。

    

1
flyisland
2004-05-10 23:11
做不到。

jaas是一个认证授权框架,它的目的是可更换认证授权的具体实现,用户安全信息在应用之间的传递可以说跟jaas没有关系。

jaas可以跟jdbc类比,只是一组接口,具体的jdbc driver还是需要具体的实现,但是它保证更换jdbc driver不会影响原有的程序。

如果你开发出基于jaas的sso方案,好处就是安全的具体实现变换了,比如用户信息结构变化、存放变化、加密方式变化等等,不会影响你的方案。

dkmilk
2004-05-11 13:21
谢谢,

可惜我搞了半天,得出这样一个结论。

banq
2004-05-11 18:00
SSO/JAAS都是J2EE容器的特性,你只需要使用就可以了。

例如Jetty/JBoss就支持SSO

http://jetty.mortbay.org/jetty/faq?s=650-JBoss&t=JBoss

flyisland
2004-05-11 19:35
在我的印象中,j2ee容器应该没有对sso做什么明确的要求吧,估计是容器自行实现的。这个“ WEB-INF/jetty-web.xml”文件就应该是jetty自身特有的吧,不同的容器之间应该没有sso的协议来处理这个事情。不过这个SAML有可能成为sso的协议。

单点登陆在不同的情况下有不同的做法,如果只是web tier sso的话,很多服务器都已经有自己的实现方法,就像banq提到的jetty/jboss那样。

但是dkmilk你的讲法好像好要包括独立的客户端,那就比较麻烦。最好能够提供这些信息,sso中包括什么应用服务器,有哪些类型的客户端,这些客户端的登陆方法是什么,有没有强制性要求等等。

猜你喜欢