EJB身份验证

时间:2014-04-15 03:40:09

标签: java ejb jaas

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

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

如果JAAS无法完成这项工作,是否有类似" header"在EJB?

2 个答案:

答案 0 :(得分:0)

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

然后,只需使用检查用户是否在角色中的内置功能。<​​/ p>

答案 1 :(得分:0)

虽然我同意@EdH,即使用@RunAs,但您可以通过向令牌上下文添加令牌来实现您想要的目标。

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

  

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

     

context.sendRequest();