通过 spring-boot 进行 Spring WS UsernameToken 身份验证 + 会话管理
Posted
技术标签:
【中文标题】通过 spring-boot 进行 Spring WS UsernameToken 身份验证 + 会话管理【英文标题】:Spring WS UsernameToken authentication + session management via spring-boot 【发布时间】:2015-01-30 17:41:28 【问题描述】:我已经使用 Spring Boot 发布了 Spring Web 服务。在 WsConfigurerAdapter 中,我使用 XwsSecurityInterceptor 和 SimplePasswordValidationCallback 对用户进行身份验证,这很好。
网络配置,
@Bean
XwsSecurityInterceptor securityInterceptor()
XwsSecurityInterceptor securityInterceptor = new XwsSecurityInterceptor();
securityInterceptor.setCallbackHandler(callbackHandler());
securityInterceptor.setPolicyConfiguration(new ClassPathResource("securityPolicy.xml"));
return securityInterceptor;
@Bean
CallBackHandlerHelper callbackHandler()
CallBackHandlerHelper callbackHandler = new CallBackHandlerHelper();
callbackHandler.loadUsers(); // loading users from DB
return callbackHandler;
示例肥皂标题。
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="XWSSGID-14072105829651149256297" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>admin</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">1</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
现在我正在努力解决这些 02 问题,
1) 如何使用密码摘要和随机数,而不是纯文本。 (在我的策略 xml 中,我已将它们设置为 false 并通过 SOAP 标头以纯文本格式加载 wss:usernameToken。但我更喜欢获取密码摘要而不是纯文本格式)。
2) 我需要通过保留会话密钥来将此服务设置为有状态。不想每次都发送用户/密码。想法是仅使用用户名令牌来登录请求,然后使用唯一密钥管理会话,直到用户发送注销请求。(希望将此生成的会话密钥保留在内存中,直到会话关闭)我怎么能想办法解决这个问题给定的上下文?
【问题讨论】:
【参考方案1】:对于摘要,您将在安全策略文件中使用以下内容:
<xwss:UsernameToken digestPassword="true" useNonce="true"/>
XWSS 配置格式的参考文档可以在here 找到。
-
我真的认为您应该重新考虑,因为有状态服务通常是不受欢迎的。例如,请参阅this similar SO question,或this one,或this one,等等。
【讨论】:
以上是关于通过 spring-boot 进行 Spring WS UsernameToken 身份验证 + 会话管理的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot学习三:运用@configurationProperties与@Validated进行JSR303数据格式校验
关于快速创建一个spring-boot项目的操作,简单的spring运行方式的总结,spring注解的简单理解。