【问题标题】:EJB authenticationEJB 身份验证
【发布时间】:2014-05-29 05:58:49
【问题描述】:

这是我正在尝试做的事情:我有一个身份验证 EJB,它可以通过验证用户名和密码来授予用户“票证”(密钥和令牌对)。客户端应在每次调用远程 EJB 时传递票证,并且此类票证应能够由 EJB(方法或拦截器)获取,并且 EJB/或拦截器应验证票证并确定调用是否有效。

我不想为每个需要身份验证的函数添加票证作为参数,我相信应该有一种方法来实现这一点。我浏览了几篇关于 JAAS 自定义登录模块的文章,但仍然找不到非供应商特定的方法来执行此操作。 (而且我试图避免特定于供应商的实施)

如果 JAAS 不能完成这项工作,EJB 中是否有类似“标题”的东西?

【问题讨论】:

    标签: java ejb jaas


    【解决方案1】:

    您不能只使用角色来执行此授权吗?与其向用户授予票证,不如为他分配一个角色。

    然后,只需使用检查用户是否在某个角色中的内置功能即可。

    【讨论】:

      【解决方案2】:

      虽然我同意 @EdH,即使用 @RunAs,但您可以通过将令牌添加到 EJB 上下文来完成您想要的。

      Red Hat 通过使用接口EJBClientInterceptor 执行类似here 的操作。 通过查看ReceiverInterceptor 的代码(它实现了 EJBClientInterceptor),您可以了解如何修改 EJB 上下文(在客户端)并添加您的令牌:

      context.setReceiverInvocationContext(新 EJBReceiverInvocationContext(context, receiverContext));

      context.sendRequest();

      【讨论】:

        猜你喜欢
        • 2010-12-07
        • 2015-05-10
        • 2016-07-14
        • 2015-02-02
        • 2018-02-24
        • 2015-04-29
        • 2010-10-05
        • 2013-10-30
        • 1970-01-01
        相关资源
        最近更新 更多