2011-05-10 3 views
3

소비자 (클라이언트)와 공급자 (oAuth 서버) 사이에 중간 프록시 서버가있는 oAuth 1.0a 요청을 처리하는 방법에 문제가 있습니다. ,소비자와 공급자 간의 프록시 oAuth 요청

------------ 
| Consumer | 
------------ 
     | 
     V 
------------ 
| Proxy | 
------------ 
     | 
     V 
---------------- 
| oAuth Server | 
---------------- 

우리가 생각 가능한 문제를 우리의 OAuth 서버에 HTTP 요청을 재전송 할 때, 프록시 서버의 아파치가 요청의 일부를 설정하는 것입니다 :

은 기본적으로 그것은 다음과 같이 보입니다 헤더가 다른 값으로 지정되며 oAuth 서버에서 요청에 서명하면 서명이 일치하지 않습니다.

프록시 서버가 수정하지 않고 요청을 다시 보내는 방법이 있다면 oAuth의 경우 서명이 유효하다는 것을 알고 있습니까?

우리가 생각하는 또 다른 옵션은 서명하기 전에 oAuth 서버에서 수정 된 헤더를 대체하여 요청이 프록시에서 오지 않고 클라이언트에서 직접 나타나지 않도록 수정하는 것입니다. PHP에서 가능하다고 생각하십니까? 예를 들어 요청의 헤더를 바꿉니다. $ _SERVER 변수?

그것은 요청을 서명 할 때 클라이언트가 사용되는 유일한 HTTP 헤더가 HTTP 호스트 헤더 것으로 밝혀졌다

답변

1

주셔서 감사합니다. oAuth 매개 변수가 OAuth 헤더로 전달되는 경우 특수 OAuth 헤더가 포함되지 않습니다.

프록시가 수행해야하는 유일한 작업은 클라이언트가 요청에 서명하는 데 사용 된 HOST 헤더를 보내려는 것입니다.

예 : 토큰을 얻기 위해 클라이언트 (소비자가) 프록시 서버에 HTTP 요청을하는 경우, 그것은 다음과 같은 엔드 포인트에 요청 전송의 그런 가정 해 봅시다 :

http://proxy.com/oauth/request

이 경우 요청은 다음과 같습니다. 요청에 서명 할 때 값이 proxy.com 인 Host 헤더가 사용됩니다. 프록시 서버는 요청을 받으면

http://oursite.com/oauth/request

그것이 우리의 엔드 포인트로 다시 보낼 수 :

POST /oauth/request HTTP/1.1 
Host: proxy.com 

우리의 OAuth 서버가 요청을 기대하는 엔드 포인트가 있다고한다면, 원래의 HOST 헤더를 사용하는 대신 oursite.com의 요청에 서명하는 데 사용할 수있는 추가 HTTP 헤더에 proxy.com 값을 제공하십시오.