我目前正在使用Oracle (这是一个端到端的Java框架)来构建我的web应用程序,使用GlassFish 3.1作为应用服务器。
后者支持日航 (其管理控制台内的声明性)。因此,我创建了一个安全领域,并将它们映射到配置文件中声明的角色,并使用JAAS实现授权和身份验证安全特性。一切都很好,直到现在!在过去的几周里,我一直在研究Java的安全性。
我发现,如果坚持使用“基本”安全性,JAAS就足够好了。此外,JAAS (作为的一部分)似乎仅用于Java (但由于Java构建在Java上,因此它的一些模块正在被重用,如LoginMethod和回调)。
然后,我找到了许多关于JASPIC的帖子,发现它只能通过编程方式实现(而不是问题),并且还没有得到应用服务器供应商的完全支持,并试图在两者之间建立一个比较。即使JASPIC1.1发布已经解决了一些问题,例如:
然而,容器将不会完全记住身份验证。仍然会在每次请求时调用SAM,而SAM仍然需要重新验证。
(我听起来不太好)。
然后,我就放弃了寻找集成一些安全框架。最著名的似乎是"Spring"和"Shiro"。当然,他们每一个都有自己的特点(可能第一个更适合于一个特定的情况,而第二个在另一个)。对我来说更重要的是
但是,无论在哪里,我都发现了自相矛盾的结论。结果是:在搜索之前,我现在更困惑了。
我只是一个在安全性等主题方面的新手,而且我是一个开发人员(我有一些东西要实现),所以很难跟上每一个新版本,而且安全方面的进展似乎每天都在飞速发展。
如果可能的话,我想要一些基于个人经验的事实。每一个暗示或建议都会受到赞赏。在采取实施步骤之前,我要确定自己是有信心的。
发布于 2014-12-16 09:36:05
JASPIC是Java的一部分,它与它集成得很好。
JASPIC身份验证模块不会自动记住会话也是一个优势,因为它也使它们适合于无状态应用程序(比如JAX之类的API)。当您验证并确实需要会话时,只需将结果(用户名+组)放到会话中即可。然后,在每个"validateRequest“方法的开头,快速检查会话中是否有任何内容,如果有,请再次将这些内容交给容器。不需要从头开始验证,当然也不需要记住任何密码!
Shiro和Security是功能非常齐全的框架。你几乎无法与JASPIC相比,这是非常低的水平和基础。Spring和Shiro都没有与Java完美地集成。弹簧安全通常被认为比Shiro更复杂。
希望这能有所帮助
发布于 2015-01-02 22:32:45
JASPIC的Servlet配置文件要求对每个请求调用已配置的服务器身份验证模块( SAM ),这样SAM就能够管理身份验证会话(如果需要的话)
配置文件还支持将SAM配置为执行身份验证的情况,但随后希望将身份验证会话管理委托给包含容器,使用registerSession回调属性启用该容器。
正如Mike所指出的,配置文件还支持对身份验证会话使用无状态模式wrt,并且与容器授权系统完全集成;因此,当目标请求被授权约束覆盖时(例如在web.xml中定义或通过使用ServletSecurity注释),必须进行JASPIC身份验证。
JASPIC定义回调,容器提供回调处理程序,允许可移植的SAM设置容器调用方主体,查询容器的用户注册中心进行密码验证和组分配等。
https://stackoverflow.com/questions/22336838
复制相似问题