2013-01-03 188 views
0

我試圖使用Spring Security 3SOAP的Web服務和春季安全

確保SOAP的Web服務這是我的配置:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myDB" 
     expected-type="javax.sql.DataSource" /> 

<http authentication-manager-ref="authenticationManager"> 
    <intercept-url pattern="/**" access="ROLE_USER" requires-channel="https" /> 
    <http-basic /> 
    <logout logout-url="/logout" delete-cookies="JSESSIONID" /> 
</http> 

<authentication-manager id="authenticationManager"> 
    <authentication-provider> 
     <jdbc-user-service data-source-ref="dataSource" /> 
    </authentication-provider> 
</authentication-manager> 

Tomcat的配置爲SSL,包含密鑰庫服務器的私鑰被使用。我正在使用SOAPUI測試Web服務。我創建了一個執行服務提供的操作之一的請求。在Auth部分中,我根據數據庫中存在的值添加了測試用戶的用戶名和密碼。在發送請求之後,我期望創建一個會話,並且不需要再次進行身份驗證。在HTTP響應中,JSESSIONID cookie存在。當網站受到同一機制的保護時,用戶只需輸入一次憑證,直到會話過期,需要重新進行身份驗證。

我的配置有什麼問題?


編輯:我忘了補充一點,當我多次重新發送相同的請求,接收到的JSESSIONID的cookie始終不同的值。我應該期望它在某個特定會議上是否一樣?

+0

SoapUI是否正確發回cookie? – artbristol

+0

@artbristol對於SOAPUI發送的每條消息,似乎都會生成一個新的JSESSIONID cookie。我不知道爲什麼。 –

+0

這將是因爲SoapUI沒有爲每個新請求返回原始cookie。 – artbristol

回答

0

在TestCase選項下,您需要打開「維護HTTP會話」選項。不幸的是,你必須爲每個測試用例單獨執行此操作,因此沒有全局選項。