2014-07-10 4 views
3

나는 한 번이 오류는WSO2 API 관리자 - "기본 버전으로 설정"으로 인해 인증 오류가 발생합니까?

<ams:fault 
    xmlns:ams="http://wso2.org/apimanager/security"> 
    <ams:code>900906</ams:code> 
    <ams:message>No matching resource found in the API for the given request</ams:message> 
    <ams:description>Access failure for API: xxxx/xxxx, version: v0.1 with key: xxxxxx</ams:description> 
</ams:fault> 

내가 전혀 놓친 무언가가 다시 확인 밤은은 "확인이 기본 버전"체크 상자를 제공하는 문제를 작동하지 않는 API를 얻을 확인했다? 감사합니다.

재.

편집 - 추가 세부 사항 및 로그

TID [-1234] [AM] [2014년 7월 10일 13 : 05 : 56,238] ERROR {org.wso2.carbon.apimgt.gateway .handlers.security.APIAuthenticationHandler} - API 인증 실패 org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator.authenticate (OAuthAuthenticator.java:157) org.wso2.carbon.apimgt.gateway.handlers .security.APIAuthenticationHandler.handleRequest (APIAuthenticationHandler.java:92) org.apache.synapse.rest.API.process (API.java:285) org.apach (RESTRequestHandler.java : 64) Axis2SynapseEnvironment.java:220) org.apache.synapse.core.axis2.SynapseMessageReceiver.receive (SynapseMessageReceiver.java:83) org.apache.axis2.engine.AxisEngine.receive (AxisEngine.java:180) org.apache (serverWorker.java : 348) .NativeWorkerPool $ 1.run (NativeWorkerPool.java:172) java.util.concurrent.ThreadPoolExecutor.runWorker (T hreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) java.lang.Thread.run (Thread.java:744)

답변

0

저장 및 게시하시기 바랍니다 일단 API를 변경하면 API. 이로 인해 문제가 발생할 수 있습니다.

게시 한 후에는 2 세트의 제작 URL (하나는 버전이 있고 다른 하나는 버전이 없음)이 표시되어야합니다. 귀하의 API API 스토어에서 해당 API가 제공되는지 확인하십시오.

+0

안녕하세요 다시 Nadeesha, 실제로이 작업을 수행하여 저장소에 두 개의 URL이 있지만 둘 다 동일한 작업을 수행하고 같은 오류가 발생합니다 (인수를 위해 방금 시도했지만 여전히 작동하지 않습니다). 그러나 API를 기본값으로 변경하지 않으면 버전이있는 API가 작동합니다. 그게 도움이된다면 카본 로그 세부 사항을 질문에 추가 했나요? 고마워, 애쉬. – Ash

+0

p.s. 프로덕션 및 샌드 박스 자격 증명을 모두 사용해 보았습니다. 샌드 박스는이 기본 체크 박스가 없어도 작동하지만 체크 박스는 동일한 인증 키가 작동하지 않습니다. – Ash

+0

동일한 기능이 작동합니다. 이 이슈의 원인이 무엇인지 확실하지 않습니다. – Nadeesha

0

먼저 환경에서 ../repository/conf/log4j.properties 파일을 편집하고 서비스를 다시 시작하여 해당 와이어 로그를 켜야합니다. 이렇게하면 기본 API 버전에 대한 요청이 처리되는 방식이므로 게이트웨이에 대한 초기 요청과 게이트웨이에서 자체 (또는 클러스터의 다른 게이트웨이)에 대한 요청 헤더에 대한 요청 헤더를 볼 수 있습니다. 이렇게하면 인증 헤더 값이 실제로 인증 처리기로 전달되는지 여부를 식별하는 데 도움이됩니다.

기본 버전을 사용하여 API를 게시 할 때 버전 구성과 버전없는 구성이라는 API에 대해 실제로 두 가지 개별 시냅스 구성을 만들거나 업데이트한다는 점에 유의하십시오.당신이 확인해야 후자의 정의의 부분은 기본적으로

  <else> 
      <header name="WSO2_AM_API_DEFAULT_VERSION" scope="transport" value="true"/> 
      <property name="uri.var.portnum" expression="get-property('https.nio.port')"/> 
      <send> 
       <endpoint> 
       <http uri-template="https://localhost:{uri.var.portnum}/myApi/v1"> 
        <timeout> 
         <duration>60000</duration> 
         <responseAction>fault</responseAction> 
        </timeout> 
       </http> 
       </endpoint> 
      </send> 
     </else> 

은 기본 버전에 새로 생성 된 정의는 당신이 원하는하지 않을 수있는 localhost로 요청을 보내려고 시도합니다. ../repository/deployment/synapse-configs/default/api에서이 정의가 올바른지 확인하십시오.

실제로 인증 오류 인 것처럼 보이므로 새 구독도 테스트해야합니다. 일부 구독자로 새 응용 프로그램을 만들고 API에 가입하고 새 액세스 토큰을 생성하십시오. 왜 (기본 버전을 설정하면 AM_API 테이블에 새로운 API 항목이 생성되지 않으므로) 이해할 수 없겠지만, 기본 토큰에 대해 유효하지 않은 액세스 토큰 자격 증명으로 인해 발생할 수 있으며 새 토큰을 생성해야합니다 (이론) 테스트.