2016-12-12 2 views
0

WSO2 API 관리자 2.0을 사용 중이며 다음 구성을 axis2.xml 및 synapse.xml에 추가하여 프록시를 사용하도록 구성했습니다. 그러나 내가 만든 테스트 API에 액세스하려고하면 "Proxy Authorization required"또는 "Server Hangup"오류가 발생합니다. 유선을 통해 요청을 보려고하면 프록시 인증 헤더가있는 GET 요청 (Server Hangup 오류가 발생 함)과 CONNECT 요청 (Proxy Authorization required를받는 요청)이 있음을 확인했습니다. 오류). 왜 이런 일이 일어나고 모든 요청에 ​​헤더를 표시 할 수 있습니까?WSO2 API 관리자에서 프록시 인증이 필요합니다.

axis2.xml :

<transportSender name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpSender"> 
    <parameter name="non-blocking" locked="false">true</parameter> 
    <parameter name="http.proxyHost" locked="false">10.1.0.236</parameter> 
    <parameter name="http.proxyPort" locked="false">80</parameter> 
</transportSender> 

<transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender"> 
    <parameter name="non-blocking" locked="false">true</parameter> 
    <parameter name="http.proxyHost" locked="false">10.1.0.236</parameter> 
    <parameter name="http.proxyPort" locked="false">80</parameter> 
    <parameter name="keystore" locked="false"> 
     <KeyStore> 
      <Location>repository/resources/security/wso2carbon.jks</Location> 
      <Type>JKS</Type> 
      <Password>wso2carbon</Password> 
      <KeyPassword>wso2carbon</KeyPassword> 
     </KeyStore> 
    </parameter> 
    <parameter name="truststore" locked="false"> 
     <TrustStore> 
      <Location>repository/resources/security/client-truststore.jks</Location> 
      <Type>JKS</Type> 
      <Password>wso2carbon</Password> 
     </TrustStore> 
    </parameter> 
    <parameter name="HostnameVerifier">AllowAll</parameter> 
     <!--supports Strict|AllowAll|DefaultAndLocalhost or the default if none specified --> 
</transportSender> 

synapse.xml :

<definitions xmlns="http://ws.apache.org/ns/synapse"> 
    <sequence xmlns="http://ws.apache.org/ns/synapse" name="WSO2AM--Ext--In"> 
     <property name="Proxy-Authorization" expression="fn:concat('Basic ', base64Encode('smsapp:let$c0nnect'))" scope="transport"/> 
     <property name="POST_TO_URI" value="true" scope="axis2"/> 
     <property name="DISABLE_CHUNKING" value="true" scope="axis2"/> 
     <log level="custom"> 
      <property name="TRACE" value="Global Mediation Extension2"/> 
     </log> 
    </sequence> 
<!-- You can add any flat sequences, endpoints, etc.. to this synapse.xml file if you do 
*not* want to keep the artifacts in several files --> 
</definitions> 

요청과 응답 :
는 GET

GET https://apiurl.com/api/apiname HTTP/1.1\r\n 
    [Expert Info (Chat/Sequence): GET https://apiurl.com/api/apiname HTTP/1.1\r\n] 
     [GET https://apiurl.com/api/apiname HTTP/1.1\r\n] 
     [Severity level: Chat] 
     [Group: Sequence] 
    Request Method: GET 
    Request URI: https://apiurl.com/api/apiname 
    Request Version: HTTP/1.1 
Proxy-Authorization: Basic XXXXXXXXXXXXXXXX\r\n 
    Credentials: username:pwd 


Hypertext Transfer Protocol 
HTTP/1.1 502 Server Hangup\r\n 
    [Expert Info (Chat/Sequence): HTTP/1.1 502 Server Hangup\r\n] 
     [HTTP/1.1 502 Server Hangup\r\n] 
     [Severity level: Chat] 
     [Group: Sequence] 
    Request Version: HTTP/1.1 
    Status Code: 502 
    Response Phrase: Server Hangup 
Date: Thu, 08 Dec 2016 12:12:20 GMT\r\n 
Connection: close\r\n 
Via: HTTPS/1.1 localhost.localdomain\r\n 
Cache-Control: no-store\r\n 
Content-Type: text/html\r\n 
Content-Language: en\r\n 
Content-Length: 666\r\n 
\r\n 
[HTTP response 1/1] 
[Time since request: 0.235017000 seconds] 
[Request in frame: 456] 
File Data: 666 bytes 

은 CONNECT는

Hypertext Transfer Protocol 
    CONNECT apiurl.com:443 HTTP/1.1\r\n 
     [Expert Info (Chat/Sequence): CONNECT apiurl.com:443 HTTP/1.1\r\n] 
      [CONNECT apiurl.com:443 HTTP/1.1\r\n] 
      [Severity level: Chat] 
      [Group: Sequence] 
     Request Method: CONNECT 
     Request URI: apiurl.com:443 
     Request Version: HTTP/1.1 
    Host: apiurl.com:443\r\n 
    Proxy-Connection: Keep-Alive\r\n 
    \r\n 
    [Full request URI: apiurl.com:443] 
    [HTTP request 1/2] 
    [Response in frame: 595] 
    [Next request in frame: 880] 


Hypertext Transfer Protocol 
    HTTP/1.1 407 Proxy Authorization Required\r\n 
     [Expert Info (Chat/Sequence): HTTP/1.1 407 Proxy Authorization Required\r\n] 
      [HTTP/1.1 407 Proxy Authorization Required\r\n] 
      [Severity level: Chat] 
      [Group: Sequence] 
     Request Version: HTTP/1.1 
     Status Code: 407 
     Response Phrase: Proxy Authorization Required 
    Date: Thu, 08 Dec 2016 12:12:22 GMT\r\n 
    Proxy-Connection: keep-alive\r\n 
    Via: 1.1 localhost.localdomain\r\n 
    Cache-Control: no-store\r\n 
    Content-Type: text/html\r\n 
    Content-Language: en\r\n 
    Proxy-Authenticate: Basic realm="Websense Content Gateway"\r\n 
    Content-Length: 666\r\n 
    \r\n 
    [HTTP response 1/2] 
    [Time since request: 0.002752000 seconds] 
    [Request in frame: 589] 
    [Next request in frame: 880] 
    [Next response in frame: 894] 
    File Data: 666 bytes 

답변

0

여기에 (내가 ESB 5.0.0,하지 API 관리자 사용) 나를 위해 일한 솔루션입니다.

내 경우에는 을 내 HTTP에, HTTPS 보낸 사람을 2 축에 추가해야했습니다. 그래서 나는에 있었다 :

  1. 삭제 프록시 매개 변수 HTTP 및 https를 보낸 사람 :

    <parameter name="http.proxyHost" locked="false">some_host</parameter> 
    <parameter name="http.proxyPort" locked="false">some_port</parameter> 
    
  2. <parameter name="proxyProfiles"> 
         <profile> 
          <targetHosts>*</targetHosts> 
          <proxyHost>some_host</proxyHost> 
          <proxyPort>some_port</proxyPort> 
          <proxyUserName>some_username</proxyUserName> 
          <proxyPassword>some_password</proxyPassword> 
         </profile> 
    </parameter> 
    
    ( HTTP 및 HTTPS 보낸 사람에) 매개 변수 ProxyProfiles 추가
  3. .xml API Proxy-AuthorizationPOST_TO_URI을 삭제했습니다.

자세한 내용 : Working with Proxy Servers (wso2.com)

편집 : 몇 가지 더 테스트 후 는 HTTP는 API에서 Proxy-AuthorizationPOST_TO_URI 매개 변수를 필요로 보이지만 HTTPS 대신에 그들 중 내가 전에 언급 한 바와 같이 proxyProfiles이 필요합니다. 이것이 없으면 HTTPS 서비스를 호출 할 수 없습니다.

관련 문제