2014-12-02 7 views
0

스프링 부트를 사용하여 스프링 웹 서비스를 게시했습니다. WsConfigurerAdapter에서 SimplePasswordValidationCallback과 함께 XwsSecurityInterceptor를 사용하여 사용자를 인증했습니다.스프링 WS UsernameToken 인증 + 스프링 부트를 통한 세션 관리

웹 설정,

@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> 

는 지금은

1) 어떻게 일반 텍스트보다 암호를 소화하고 넌스 사용하려면 다음 02 문제와 사투를 벌인거야. (내 정책 XML에서 나는 false로 설정하고 SOAP 헤더를 통해 일반 텍스트 형식의 usernameToken을로드하지만 plainText 형식보다 암호 다이제스트를 선호합니다.

2)이 서비스를 세션 키를 유지하여 상태 정보로 설정해야합니다. 사용자/친구를 매번 보내고 싶지는 않습니다. 아이디어는 로그인 요청에만 사용자 이름 토큰을 사용하고 이후 사용자가 로그 오프 요청을 보낼 때까지 고유 키를 사용하여 세션을 관리합니다 (세션이 해제 될 때까지 생성 된 세션 키를 메모리에 유지하려고 함). 어떻게 해결할 수 있을까요? 주어진 문맥?

답변

0
  1. 은 소화를 들어, 당신은 당신의 보안 정책 파일에 다음을 사용하십시오 :

    <xwss:UsernameToken digestPassword="true" useNonce="true"/> 
    

XWSS 구성 형식에 대한 참조 문서는 here를 찾을 수 있습니다.

  1. 나는 무언가를 재검토해야한다고 생각합니다. 무대 서비스가 일반적으로 눈살을 찌푸리게하는 것처럼. 예를 들어 this similar SO question 또는 this one 또는 this one 등의 내용을 참조하십시오.
관련 문제