在我的 WebService 中,我需要记录调用者的 ID,但 wsContext.getUserPrincipal() 返回 null,即使用户是使用带密码身份验证的 WS-Security 进行身份验证的。根据 JAX-WS 2.1 的 JavaDocs,如果用户尚未通过身份验证,WSContext.getUserPrincipal() 应该只返回 null。
我是否必须在安全处理程序中执行某些操作才能将用户主体设置到 WSContext 中?文档似乎表明它是自动完成的。
我在 Tomcat 上使用 metro 1.1 堆栈(我认为是 1.1.5)和 jax-ws 2.1.3 堆栈。
最佳答案
尝试迭代 wsContext.getMessageContext().entrySet() 并显示值,有时它们在那里但由于某种原因无法通过 getUserPrincipal() 方法检索。
在这种情况下,只需直接从那里获取您的委托(delegate)人,然后给 future 的您留下评论,这不是很便携。
关于java - WSContext.getUserPrincipal() 为密码摘要认证返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1597421/