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

标签 java web-services jax-ws ws-security java-metro-framework

在我的 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/

相关文章:

java - 为什么我的程序在字节数组中保存 1.5Gb 内存?

java - 为什么上传照片时我的 GUI 布局会改变?

c# - 值不在预期范围内

php - 如何在 Cakephp 的 RESTful api 的 url 中提供字符串?

java - 使用 ksoap2 : parameters are all null 从 Android 调用 java webservice

java - Onelogin java saml 用于提供访问

java - 如何在计算器的结果中添加小数?

c# - webservice DateTime 意外值?

java - 通过 CXF 配置基于 SSL 的 JAX-WS

java - 无法找到 JAX-WS 的 Spring 命名空间