2014-11-18 8 views
1

어떻게중재자를 사용하여 HTTP 헤더를 추출하는 방법

관리자는 사용자 이름과 0PN5J17HBGZHT7JJ3X82입니다
Authorization: ​"admin 0PN5J17HBGZHT7JJ3X82" 

암호는 HTTP 헤더와 같은 추출 될 속성/변수에 할당 할 그런 다음 사용자 로그인 확인을 위해 dss 서비스로 전달됩니다. 내가 알고있는 바로는 API는 맞춤 시퀀스와 조정자 (https://docs.wso2.com/display/AM170/Adding+Mediation+Extensions)를 사용하여이 작업을 수행 할 수 있지만이 헤더를 추출하고이를 로그인 및 비밀번호와 같은 다른 속성 이름에 할당하는 방법에 대한 명확한 설명은 아닙니다.

중재자 헤더가이를 처리 할 수 ​​있습니까? 아니면 프록시 서비스를 사용하여 다른 방법이 있습니까?

헤더 중재자

<in> 
    <header name="Authorization" value="admin 0PN5J17HBGZHT7JJ3X82" scope="transport"/> 
    <send> 
     <endpoint name="people"> 
      <address uri="http://localhost:9443/testapi/" format="get"/> 
     </endpoint> 
    </send> 
</in> 
<out> 
    <send/> 
</out> 

프록시 서비스

<proxy name="adminServiceProxy" transports="https http" 
      startOnLoad="true" trace="disable"> 
     <description/> 
     <target> 
     <endpoint> 
      <address uri="https://localhost:9443/testapi"/> 
     </endpoint> 
     <inSequence> 
      <property name="Authorization" 
         expression="fn:concat('Basic ','admin:0PN5J17HBGZHT7JJ3X82')" 
         scope="transport"/> 
     </inSequence> 
     <outSequence> 
      <send/> 
     </outSequence> 
     </target> 
    </proxy> 

감사합니다

답변

3
당신은 다음과 같이 추출 할 수 있습니다

;

<property name="AuthHeader" expression="$trp:Authorization"/> 

그런 다음 당신이 당신의 프록시 구성에 지적
<log> 
<property name =" Authheder value" expression=get-property('AuthHeader')/> 
</log> 

그런 다음 기본 인증 헤더를 구성 .. 그것을 기록하고 검색하는 기능을 참조하십시오. blog post 다음은 시퀀스에서 다양한 정보를 검색하는 방법을 설명합니다.

+0

대단히 고마워요! –

+0

을 ESB에서 수행해야합니까? APIM에 프록시를 만들 수 있습니까? –

+0

이러한 중재 순서를 정의하고 레지스트리에 저장할 수 있습니다. API를 게시 할 때 올바른 순서 (https://docs.wso2.com/display/AM170/Adding+Mediation+Extensions)를 선택하십시오. 그렇지 않으면 프록시 서비스 내에서 복잡한 시퀀스를 정의 할 수 있으며 APIManager에서 해당 프록시 서비스를 끝점으로 호출 할 수 있습니다. – Ratha