3.8.4. 将经过身份验证的身份传播到 EJB 子系统
webservices 子系统包含一个适配器,允许您配置 Elytron 安全域以使用注释或部署描述符保护 Web 服务端点的安全性。
启用 Elytron 安全性后,可将 JAAS 主题或主体推送到 Apache CXF 端点的 SecurityContext,将身份验证的身份传播到 EJB 容器。
以下是如何使用 Apache CXF 拦截器将验证信息传播到 EJB 容器的示例:
public class PropagateSecurityInterceptor extends WSS4JInInterceptor {
public PropagateSecurityInterceptor() {
super();
getAfter().add(PolicyBasedWSS4JInInterceptor.class.getName());
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
...
final Endpoint endpoint = message.getExchange().get(Endpoint.class);
final SecurityDomainContext securityDomainContext = endpoint.getSecurityDomainContext();
//push subject principal retrieved from CXF to ElytronSecurityDomainContext
securityDomainContext.pushSubjectContext(subject, principal, null)
}
}