0
我已經發布了使用spring啓動的spring web服務。在WsConfigurerAdapter中,我使用了帶有SimplePasswordValidationCallback的XwsSecurityInterceptor來驗證用戶,這很好。Spring WS UsernameToken認證+通過spring-boot進行會話管理
web配置,
@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,但我更喜歡獲取密碼摘要而不是plainText格式)。
2)我需要通過保持會話密鑰將此服務設置爲有狀態。不想每次都發送用戶/密碼。想法是隻使用用戶名令牌來登錄請求,並在此後用一個唯一的密鑰來管理會話,直到用戶發送註銷請求(希望將這個生成的會話密鑰保存在內存中,直到會話關閉)我怎麼能想到解決這個問題給定的上下文?