Shark 用户管理以及认证管理实现分析

类别:Java 点击:0 评论:0 推荐:

我的Shark的版本为:shark-1.0-1

一、用户及组管理

1、涉及的模块:

用户与组管理及对内部开放,也对外部开放,涉及的模块为SharkAPI、SharkKernel、SharkUserGroup

2、相关的数据库表:

如果用户与组信息存储到数据库,使用到的表为:UserTable、GroupTable、UserGroupTable、GroupGroupTable

3、实现说明

Shark给外部的接口是org.enhydra.shark.api.client.wfservice.UserGroupAdministration,大家通过这个接口就能管理用户和组(如添加、删除、修改用户等),它的实现类是org.enhydra.shark.UserGroupAdmin;

Shark内部的接口是org.enhydra.shark.api.internal.usergroup.UserGroupManager,这个Shark中其他模块使用的,比如org.enhydra.shark.UserGroupAdmin,UserGroupAdmin本身并不与存储用户数据资源(如表或者LDAP)打交道,而是通过UserGroupManager来实现所有的功能的(这也是接口的好处),UserGroupManager封装了对用户和组的操作,大家可以看看里面的方法,对UserGroupManager的实现,在模块SharkUserGroup中,目前Shark给出了三种实现:DODS、Hibernate、LDAP,详细的我就不说了,大家可以看看源代码。

4、我的实现

我自己实现了UserGroupManager,本来想把代码贴出来,但太长,所以就作罢,想要的话发邮件给我。

写好对UserGroupManager实现,第二步只要修改Shark.conf文件里UserGroupManagerClassName = implement.usergroup.StaticUserGroupManager(自己的实现类)。这样调用UserGroupAdministration时就能得到自己的用户信息了。

二、认证管理

因为认证管理也涉及到用户,所以在此也做以分析

1、涉及的模块:

认证管理及只对内部开放,涉及的模块为SharkAPI、SharkAuthentication

2、实现说明:

Shark给出的内部接口是org.enhydra.shark.api.internal.authentication.AuthenticationManager,只有两个方法:configure()和validateUser()。configure()就不说了,大家都知道;validateUser()就是用来验证用户是否合法的。对AuthenticationManager的实现,在模块SharkAuthentication中,目前Shark也给出了三种实现:DODS、Hibernate、LDAP,大家看看源代码。我有点迷惑不解的就是它们的实现都不是通过UserGroupManager接口,而是自己直接操作表或LDAP来验证用户,这难道不是违背这种接口与模块设计的原则,也许它们不是同一般人开发的,并且同时进行。如果您有什么更好的解释,欢迎告诉我。

3、我的实现

强类建议大家使用UserGroupManager实现AuthenticationManager,同上,修改Shark.conf文件里AuthenticationManagerClassName = implement.usergroup.StaticAuthenticationManager(自己的实现类)。这样调用SharkConnection的connect()时是使用自己的验证类来验证用户的。

Mial:[email protected]

本文地址:http://com.8s8s.com/it/it11593.htm