关于 2 个问题,我想咨询您。
背景:我编写了一个测试、Java EE 应用程序并添加了声明式安全性。该应用程序部署在 Glassfish 3.1 上。对于单元测试,我将 JUnit 与嵌入式容器一起用于所有具有本地接口的 bean。对于应用程序的入口点 SessionFacde bean,它具有唯一的远程接口,我编写了一个简单的客户端来获取对 SessionFace bean 的引用。我只为 SessionFacade bean 应用了安全注释。
(问题 1:推荐的安全单元测试策略是什么?如果我为 sessionFacade 使用一个简单的应用程序客户端可以吗?(其他(本地)bean 不受影响,因为那里没有应用安全注释。))
问题2:我应该如何从应用程序客户端访问SessionFacde?如果您可以在此处复制 application-client.xml 的一些代码示例并获取对 JNDI 服务的引用,我将非常感激。这样可以节省我很多时间。这个问题类似于Java EE 6 Application Client login下的问题,但我找到了一个解释(http://docs.oracle.com/cd/E18930_01/html/821-2418/beacm.html),它不是真的推荐因为它将安全性负担重回开发人员而不是框架。请参阅以下文字:
“[...]程序化登录允许应用程序开发人员绕过 GlassFish Server 支持的身份验证机制,并将身份验证数据直接提供给安全服务。虽然很灵活,但如果不了解安全问题,则不应使用此功能。
由于这种机制绕过了容器管理的身份验证过程和顺序,因此应用程序开发人员必须非常小心地确保在访问任何受限资源或方法之前建立身份验证。验证登录尝试的状态并相应地更改应用程序的行为也是应用程序开发人员的责任。
程序化登录状态不一定会在会话中持续存在或参与单点登录。[...]"
感谢您到目前为止已阅读。亲切的问候,塔马斯
备注:由于我写了原帖后一直没有回应,我想说回答第二个问题就足够了。这将帮助我继续。谢谢, 塔马斯