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) } }