在JBoss EAP 7.1/WildFly中通过WS-Security头SAML凭证初始化EJB安全上下文
问题:Web服务安全上下文到EJB会话上下文的用户身份传播
我正在给SOAP Web服务配置WS-Security策略,核心是要支持SAML 2.0 Bearer和SAML 2.0 Sender Vouches两种认证模式,最终目标是利用SAML令牌中的凭证初始化EJB安全上下文,让应用的EJB模块能正确完成用户授权逻辑。
目前我已经通过嵌入式Apache CXF完成了Web服务的安全配置,也能成功初始化Web服务安全上下文——调用WebServiceContext.getUserPrincipal()可以正常获取到用户主体。但遇到了一个卡壳的问题:没办法把这个用户上下文从Web服务上下文传播到EJB会话上下文,SessionContext.getCallerPrincipal()始终拿不到正确的用户信息。
我自己梳理了思路,觉得应该要实现类似JBoss WS-Security相关功能的逻辑,也就是编写一个自定义的CXF拦截器,类似SubjectCreatingPolicyInterceptor那样,通过解析SAML令牌里的凭证来创建并传递EJB安全上下文,但具体的实现细节还没理清,想请教各位有没有靠谱的实现建议或者思路?
内容的提问来源于stack exchange,提问作者SKempken
相关产品推荐
相关产品推荐

