WSContext.getUserPrincipal()为密码摘要认证返回null

Dea*_*lze 10 java ws-security web-services java-metro-framework jax-ws

在我的WebService中,我需要记录调用者的id,但是即使使用带有密码身份验证的WS-Security对用户进行了身份验证,wsContext.getUserPrincipal()也会返回null.根据JavaDocs for JAX-WS 2.1,WSContext.getUserPrincipal()只应在用户未经过身份验证时返回null.

我是否必须在安全处理程序中执行某些操作才能将用户主体设置为WSContext?文档似乎表明它是自动完成的.

我在Tomcat上使用了带有jax-ws 2.1.3堆栈的metro 1.1堆栈(我认为是1.1.5).

Mah*_*eTo 1

尝试迭代 wsContext.getMessageContext().entrySet() 并显示值,有时它们在那里,但由于某种原因无法通过 getUserPrincipal() 方法检索。

在这种情况下,只需直接从那里获取您的本金,并向未来的您留下评论,表明这不太可移植。