我打算通过应用特定的WS-Security策略来保护所提供的SOAP Web服务,特别是" SAML 2.0 Bearer"和#34; SAML 2.0 Sender Vouches"。应使用SAML令牌中提供的凭据初始化EJB安全上下文,以在应用程序的EJB部分中应用适当的用户授权。
我成功地利用嵌入式Apache CXF来保护Web服务,并初始化Web服务安全上下文(WebServiceContext.getUserPrincipal()
)。但是,我无法将用户上下文从Web服务上下文传播到EJB会话上下文(SessionContext.getCallerPrincipal()
)。
关于如何实现这一目标的任何建议都受到高度赞赏。
到目前为止,我希望需要实现类似于此处文档的功能:https://docs.jboss.org/author/display/JBWS/WS-Security#WS-Security-Authenticationandauthorization,即创建一个类似于https://github.com/jbossws/jbossws-cxf/blob/master/modules/server/src/main/java/org/jboss/wsf/stack/cxf/security/authentication/SubjectCreatingPolicyInterceptor.java的CXF拦截器,它使用提供的凭据。 SAML令牌用于创建EJB安全上下文。