2016-10-26 36 views
1

我使用的API管理器2.0,我設計了一個新的API和生產網址是Web服務的終點。在API中,我添加了「消息中介策略」將json轉換爲請求中的soap,並在請求中將soap轉換回json。這在沒有認證的情況下工作正常。如何從WS02 Api Manager將基本auth頭傳遞給SOAP端點?

當我試圖連接到使用basic am進行身份驗證的端點無法發送auth頭時。是否有可能通過,如果有的話如何實現呢?

我已經嘗試過端點安全架構,但沒有成功。

+0

您試過這個嗎? https://docs.wso2.com/display/AM200/Basic+Auth – Bee

+0

@Bhathiya:是的,沒有成功與..現在我正在使用ESB來克服這個問題。 – Nirosan

回答

1

如果您正確配置Endpoint Security Scheme,則應該在您的api文件的repository/deployment/server/synapse-configs/default/api/目錄中看到Authorization屬性,如下所示。仔細檢查它是否存在。

<resource methods="GET" url-mapping="/menu" faultSequence="fault"> 
     <inSequence> 
     <property name="api.ut.backendRequestTime" 
        expression="get-property('SYSTEM_TIME')"/> 
     <filter source="$ctx:AM_KEY_TYPE" regex="PRODUCTION"> 
      <then> 
       <property name="Authorization" 
         expression="fn:concat('Basic ', 'YmhhdGhpeWE6cGFzc3dvcmQ=')" 
         scope="transport"/> 
       <send> 
        <endpoint name="admin--PizzaShackAPI_APIproductionEndpoint_1"> 
        <http uri-template="https://localhost:9443/am/sample/pizzashack/v1/api/"/> 
        <property name="ENDPOINT_ADDRESS" 
           value="https://localhost:9443/am/sample/pizzashack/v1/api/"/> 
        </endpoint> 
       </send> 
      </then> 
      <else> 
       <property name="Authorization" 
         expression="fn:concat('Basic ', 'YmhhdGhpeWE6cGFzc3dvcmQ=')" 
         scope="transport"/> 
       <send> 
        <endpoint name="admin--PizzaShackAPI_APIsandboxEndpoint_1"> 
        <http uri-template="https://localhost:9443/am/sample/pizzashack/v1/api/"/> 
        <property name="ENDPOINT_ADDRESS" 
           value="https://localhost:9443/am/sample/pizzashack/v1/api/"/> 
        </endpoint> 
       </send> 
      </else> 
     </filter> 
     </inSequence> 
     <outSequence> 
     <class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/> 
     <send/> 
     </outSequence> 
    </resource> 
+0

是那些包含......我目前的商業案例是這樣的, 1.esb要求與認證 2. API管理器調用後端服務的ESB 我想提出的是工作就像 1. ESB通過身份驗證呼叫後端服務 2. api管理器調用esb(**帶有需要後端服務身份驗證**的身份驗證詳細信息) 這是可能實現的嗎? – Nirosan

+0

當你像上面那樣設置'Authorization'屬性時,你會硬編碼後端憑證。但據我瞭解,你不想對它們進行硬編碼。你想要的是用APIM呼叫發送這些證書。我的理解是否正確?如果是的話,你不必遵循上面的鏈接。你可以簡單地發送你的APIM請求的reqiured http頭, – Bee

0

您可以通過實現可爲特定API配置的介體來執行此操作。在進行ESB調用之前,該類將被調用,您可以檢查請求並使用基本身份驗證詳細信息設置標頭。 步驟。 1.創建一個調停項目 2.實現日誌內的介質類(的handleRequest方法) 3.導出這個類作爲一個jar文件 4.複製它在Carbon_home /存儲庫/組件/ lib目錄 5.配置調解(C:\ WSO2 \ wso2am- 2.0.0 \ repository \ deployment \ server \ synapse-configs \ default \ api) 6.在處理程序部分添加配置示例

  1. 重新啓動服務器APM
相關問題