2009-10-20 21 views
10

在我的WebService中,我需要记录调用者的id,但wsContext.getUserPrincipal()返回null,即使用户使用带密码认证的WS-Security进行了认证。根据JAX-WS 2.1的JavaDocs,WSContext.getUserPrincipal()应该只在用户未被认证时返回null。WSContext.getUserPrincipal()返回null用于密码摘要认证

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

我正在使用地铁1.1堆栈(1.1.5我认为)与Tomcat上的jax-ws 2.1.3堆栈。

+0

我想知道这是否现在工作。 在我过去的一个项目中,我们使用了WSContext.getUserPrincipal(),它正在工作。但是我们正在进行HTTP基本身份验证。 – 2011-11-19 21:17:55

+0

地铁1.1相当古老,也许地铁1.4解决了这个问题。另一方面,你可以在这里附加你所有的WsContext转储吗? – korifey 2011-12-28 12:07:18

回答

1

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

在这种情况下,直接从那里获取校长并留下评论给未来您,这是不是很便携。

+0

+1“为未来留下评论......” – 2012-02-06 23:23:07