2016-10-26 5 views
1

APIマネージャ2.0を使用しています。私は新しいAPIを設計しました。プロダクションURLはウェブサービスのエンドポイントです。 APIで私は "Message Mediation Policies"を追加してjsonを要求に応じて石鹸に変換し、要求に応じてsoapをjsonに変換し直しました。これは、認証がない場合はうまく動作します。WS02 APIマネージャから基本認証ヘッダーをSOAPエンドポイントに渡すには?

私は基本認証を使用して認証されたエンドポイントに接続しようとしましたが、認証ヘッダーを送信できませんでした。合格することは可能ですか、それを達成する方法はありますか?

私はすでにEndpoint Security Schemaを試しており、それには成功していません。

+0

これを試しましたか? https://docs.wso2.com/display/AM200/Basic+Auth – Bee

+0

@Bhathiya:はい、それでは成功しません。今のところ、この問題を克服するためにESBを使用しています。 – Nirosan

答えて

1

Endpoint Security Schemeを正しく設定すると、下のようにrepository/deployment/server/synapse-configs/default/api/ディレクトリにあるAuthorizationプロパティがapiファイルに表示されます。それがあれば再度確認してください。

<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

ものが含まれているそう...私の現在のビジネスの場合はこのようなものです、認証 2. APIマネージャ呼び出しでバックエンドサービスを呼び出す1.esb は私が作りたい は仕事 よう 1. ESBであるESB を呼び出してバックエンドサービスを実行します。2. apiマネージャがesb(**バックエンドサービス認証に必要な認証情報**を使用します) これは実現可能ですか? – Nirosan

+0

上記のような 'Authorization'プロパティを設定すると、バックエンド証明書をハードコードします。しかし、私が理解しているように、あなたはそれらをハードコードしたくありません。 APIMコールでこれらの認証情報を送信することができます。私の理解は正しいのですか?はいの場合は、上記のリンクに従う必要はありません。 APIMリクエストでreqiured httpヘッダーを送信するだけで、 – Bee

0

これは、特定のAPI用に構成できるメディエータを実装することで実現できます。このクラスは、ESBコールの前に呼び出され、リクエストを検査し、基本認証の詳細でヘッダーを設定することができます。 手順。 1.メディエータプロジェクトを作成する 2.メディエータクラス(handleRequestメソッド)にログを実装する 3.このクラスをjarファイルとしてエクスポートする 4. Carbon_home/repository/components/libにコピーする 5.メディエータをコンフィグレーションする(C:¥WSO2¥wso2am- 2.0.0¥repository¥deployment¥server¥synapse-configs¥default¥api)12.ハンドラセクションのコンフィグレーションを追加します。

  1. サーバーを再起動してください。APM
関連する問題