当使用CallBackHandler(从javax.security.auth.callback.CallbackHandler实现)来验证UsernameToken时,如何存储请求者的身份以供以后使用?
我的用例是用户A请求method1并接收特定于用户A的数据。用户B请求method1并接收特定于用户B的数据。
我在返回响应之前使用camel处理请求,但我需要能够跟踪请求者是谁。
答案 0 :(得分:1)
您应该可以使用Exchange.AUTHENTICATION的键来查找主题。打击代码向您显示camel如何将来自cxf消息的UserPrincipal存储到camel消息头。
// propagate the security subject from CXF security context
SecurityContext securityContext = cxfMessage.get(SecurityContext.class);
if (securityContext != null && securityContext.getUserPrincipal() != null) {
Subject subject = new Subject();
subject.getPrincipals().add(securityContext.getUserPrincipal());
camelExchange.getIn().getHeaders().put(Exchange.AUTHENTICATION, subject);
}