【发布时间】: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) 我需要通过保留会话密钥来将此服务设置为有状态。不想每次都发送用户/密码。想法是仅使用用户名令牌来登录请求,然后使用唯一密钥管理会话,直到用户发送注销请求。(希望将此生成的会话密钥保留在内存中,直到会话关闭)我怎么能想办法解决这个问题给定的上下文?
【问题讨论】:
标签: spring session spring-security spring-boot spring-ws