2015-06-30 70 views
0

我試圖將xml字符串發佈到使用Mule 3.5.0 CE的CAS後面的REST服務。我在出站終端上配置了mule安全管理器和http安全篩選器,但沒有取得多大成功。騾文件沒有太多的幫助,我已經遇到了一些關於如何保護入站端點的帖子,但沒有對驗證出站請求進行驗證。有沒有人以前做過這件事,甚至有可能嗎?提前致謝。HTTP POST到由CAS使用Mule保護的REST服務

<!-- CONNECTORS --> 
<https:connector name="HttpsConnector"> 
    <service-overrides sessionHandler="org.mule.session.NullSessionHandler"/> 
    <https:tls-server path="${truststore}" storePassword="password"/> 
</https:connector> 


<!-- ENDPOINTS --> 
<https:endpoint name="PublishEndpoint" connector-ref="HttpsConnector" 
    address="${my.url}" 
    method="POST" contentType="application/xml" exchange-pattern="request-response" 
    keepAlive="true" /> 

<mule-ss:security-manager> 
    <mule-ss:delegate-security-provider name="memory-provider" delegate-ref="authenticationManager" /> 
</mule-ss:security-manager> 

<spring:beans> 
    <ss:authentication-manager alias="authenticationManager"> 
     <ss:authentication-provider> 
      <ss:user-service id="userService"> 
       <ss:user name="${user}" password="${pwd}" authorities="ROLE_USER" /> 
      </ss:user-service> 
     </ss:authentication-provider> 
    </ss:authentication-manager> 
</spring:beans> 

<!-- publish xml string to service --> 
<flow name="PublishFlow"> 
    <vm:inbound-endpoint ref="ReportEndpoint" /> 
    <https:outbound-endpoint ref="PublishEndpoint"> 
     <mule-ss:http-security-filter realm="mule-realm" securityProviders="memory-provider"/> 
    </https:outbound-endpoint> 
</flow> 
+0

'http-security-filter'用於入站端點,而不是出站端點。 CAS預期什麼樣的憑證?只有基本身份驗證授權標頭中的用戶名和密碼?還有別的嗎? –

+0

@DavidDossot CAS首先需要用戶名/密碼才能啓動身份驗證過程。然後有一些票證交換完成驗證。 – user1932673

+0

您可以通過使用其中的同名屬性在「https:outbound-endpoint」中傳遞用戶名/密碼。但這不會做「少量交換機票」。 –

回答

0

CAS安全方案不是直接由HTTP請求者實現的,實際上在3.5.0中實際上只支持非搶先式BASIC驗證。

你最好的辦法是回滾到http:oubound端點,並創建一個自定義調度器來處理java代碼的身份驗證。