【问题标题】:spring-ws get username & passwordspring-ws 获取用户名和密码
【发布时间】:2013-01-05 19:43:03
【问题描述】:

我已经学习了一个多星期的 spring-ws 并且我已经建立了一个简单的 web 服务。

我正在使用 soapui 对其进行测试,并在请求属性中指定用户名和密码。

我的 Web 服务没有安全层,我也不想添加。我只需要从请求中提取用户名和密码即可向另一个服务发出请求。我不想在我的请求正文中指定用户名或密码。

我要做的就是从soapui 的请求中检索用户名和密码。有谁知道请求中的用户名和密码在哪里?它们是在http 标头还是soap 标头中。 soapui 中的soap 标头似乎为空。

我尝试将自己的拦截器写入端点并获取soap标头,但它似乎是空的。

我也尝试使用SecurityContextHolder.getContext().getAuthentication(); 检索它们 但这会返回 null。

我还尝试从我的端点询问HttpServletRequest 以查看用户详细信息是否在其中,遗憾的是没有。

有没有人对此领域有任何想法或知识?

【问题讨论】:

    标签: java spring spring-security soapui spring-ws


    【解决方案1】:

    由于您的应用程序中没有身份验证,因此您的服务器不会提示进行身份验证,并且您在 soapUI 中指定的参数永远不会使用(不包含在 http 请求中)。此外,使用

    没有意义
    SecurityContextHolder.getContext().getAuthentication()
    

    由于您没有身份验证,因此没有经过身份验证的用户,并且它返回 null 如您所说。 如果您需要用户名/密码来访问其他资源,您应该将它们指定为 Web 服务中的配置参数。

    【讨论】:

    • 感谢您的回复。遗憾的是,我必须从请求中提取用户名和密码,在配置中设置它们不是一个选项。我尝试了各种简单的身份验证设置,但遗憾的是没有成功。你能推荐一些很好的教程来展示一个非常简单的设置吗?谢谢
    • 我在我的项目中添加了一个基本的身份验证管理器,现在可以获取用户名和密码。感谢您的洞察力:)
    • @MatthewCoole 我也有同样的问题。您能否发布您如何为此设置基本身份验证管理器?
    • @babb krams915.blogspot.com/2010/12/… spring-security.xml 包含一个身份验证管理器的示例,这是我用作基础的示例。与我所做的唯一不同的是,我没有使用基本的用户服务,而是通过实现 org.springframework.security.authentication.AuthenticationProvider 接口实现了自己的身份验证提供程序。希望这会有所帮助:)
    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2015-03-09
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多