在 MDB 的 onMessage 方法中,如何检索发起请求的 JAAS 用户主体的名称?我的应用程序正在使用 Servlet 登录和 jdbcRealm。
我已经考虑将它添加为消息属性,但我宁愿确保它由 JAAS 处理。
在 MDB 的 onMessage 方法中,如何检索发起请求的 JAAS 用户主体的名称?我的应用程序正在使用 Servlet 登录和 jdbcRealm。
我已经考虑将它添加为消息属性,但我宁愿确保它由 JAAS 处理。
它是固有处理的,您所要做的就是注入和使用MessageDrivenContext
:
..
@Resource
private MessageDrivenContext mdc;
public void onMessage(Message message) {
Principal principal = mdc.getCallerPrincipal();
System.out.println(principal.getName());
//ALTERNATIVELY, YOU CAN USE A METHOD mdc.isCallerInRole("<role name>");
}