发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 下一页 Go 2

求助!关于j2ee安全框架问题?!!!

    
2004-12-30 14:34
赞助商链接

在j2ee框架中如何实现可定制的安全验证及授权?

我想在我的系统中实现如下功能:
说明:此系统的客户端是使用java编写的界面,服务端采用Web Sevice实现业务逻辑,业务的实现主要采用EJB。

1、登录,用户在客户端通过输入用户名及密码进行登录,服务端根据登录的用户名及密码来判断是否登录成功!

2、方法调用,根据登录的用户信息,在数据库中取得该用户的权限(此权限何存在数据库中,管理员可对用户进行权限的修改),来判断此用户是否有此方法调用的权限。

3、权限设置,管理员可对用户进行权限设置。

我的分析:
a.用户登录后,在服务端的其它业务方法中如何实现权限验证?实现方式可以采用,将所以方法在一个状态bean中实现,用户登录后将用户信息进行保存,调用其它方法时可进行查询数据库得到其权限,此种方法的害处是每个客户端都必须使用一个状态bean,程序退出时该状态bean才死掉,如果客户比较多时,服务器将无法负载。
b.第二种实现方法,在每一个商务方法中加入用户信息,在调用商务方法时根据传入的参数(用户信息)查询数据库得到其权限,这种方法的缺点是会增加传输数据,且每个方法都带用户信息也不地道:)
c.第三种实现方法,使用jaas验证,服务端由部署员进行角色用户映射的部署,但这种方式无法动态的增加、删除、改变用户,授权也无法动态变更。
我的问题:
以上是我想到的实现方法,都有其致命的缺点,无法满足需求,请教各位大虾?谁有更好的方法,给出相应实例,我将不甚感激!!此问题困扰我很久了!!在此先谢过了!

2004-12-30 15:18

这里的帖子如何修改啊???

对上面问题的补充:

主要是要实现在服务端中调用商务方法时根据用户权限进间判断,服务端不是采用jsp,所有商务方法都很机密,外界只有登录后才能访问相应的商务方法,因为系统中所有的商务方法都会以web sevices的方式暴露出来,恶意的客户端如果可以调用相应商务方法,系统就无安全可言了!

2004-12-30 15:22

你是台湾的吗?什么商务商务的,感觉怪怪的。台湾说什么程式什么的。
有状态session bean 属于重量级的,一般访问量比较大的系统不推荐使用,还是使用web端的session作为状态载体。
你为什么需要每次都去查询数据库?完全可以一次把功能项-角色对应的关系加载进内存(在系统启动时,因为这些东西通常很少变动),然后在用户登陆的时候,在session保留它的角色信息就行了。这样完全可以把权限验证这层东西独立出来。
至于jaas,我实在想不去它有什么用?一般的系统都需要用户自己能动态对角色对应的功能项进行操作的。

2004-12-30 16:11

首先谢谢回复,你所说的我在分析中已经说过了,我采用的是b/s和c/s,session中保存用户信息只能在b/s中实现,而c/s就不行了,我所担心的不是在客户端得到登录用户的权限,而是在客户端调用业务方法时,服务端的安全,如果采用非状态session bean,它是无法在服务端保存用户信息的,要么就是把所有暴露的业务方法都放在此session bean 中,然后客户端始终使用这个session bean进行交互,这个方法可以实现安全,但我在分析中已经说了,它跟状态session bean就没什么区别了,服务器无法承载。

我把系统所有的业务方法都得暴露,如果其人再编写一个客户端调用这些业务方法,它不是一样可以得到信息,这样就无安全可言了。

axis里可插入自定义handler来实现过滤,它应该算一个不错的实现方案,但可惜它在weblogic tookit中不能通用。

采用加密或数字签名数据也算一个不错的选择,可是却无法实现授权和验证。

达到解决我提出的问题的方法有很多,但都不是很好,我只想通过交流能找出更好的解决方案。。谢谢!

2004-12-30 17:37

既然你觉得每个现有的方案都不能满足需求,那么,应该自己实现RBAC啊,好象也不是那么复杂(简单的足以满足你动态给用户角色分配功能访问权).再高级一点的可以使用axis的UDDI嘛...

我觉得你可以在WS层做个controller(handler?)来委派动能和认证.至于如何实现授权应该很容易...

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com