2010-05-29 4 views
0

oAuth를 지원하는 API를 만들려고 장고 피스톤과 협력하고 있습니다. 내가 키와 비밀을 모두 테스트 용 "ABCD"로 설정하여 피스톤의 관리 인터페이스에 소비자를 추가"서명이 잘못되었습니다."o 장거리 피스톤이 장착 된 Auth 제공 업체

http://blog.carduner.net/2010/01/26/django-piston-and-oauth/

:

나는에서 튜토리얼을 사용하여 시작했다.

URL이 성공적으로 유선 연결되고 oAuth 공급자가 호출됩니다.

그러나,가 Tripit (파이썬 get_request_token.py "http://127.0.0.1:8000/api"ABCD ABCD), 나는 다음과 같은 오류가 나타납니다 내 GET 요청 토큰 테스트를 실행 :

Invalid signature. Expected signature base string: GET&http%3A%2F%2F127.0.0.1%3A8000%2Fapi%2Foauth%2Frequest_token%2F&oauth_consumer_key%3Dabcd%26oauth_nonce%3D0c0bdded5b1afb8eddf94f7ccc672658%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1275135410%26oauth_version%3D1.0

문제는 피스톤의의 _check_signature 방법 내부 거짓말을 것을 oauth.py,

valid_sig = signature_method.check_signature(oauth_request, consumer, token, signature) 

false가 반환됩니다. 그러나 서명 유효성을 검사하는 방법을 알아낼 수는 없습니다.

아이디어가 있으십니까?

업데이트 : 피스톤의 백엔드에서 테스트 소비자를 제거하면

가 반환 응답이 올바르게 "잘못된 소비자"로 설정, 그래서이 검색이 작동하는 나타납니다.

답변

0

내가 찾은 결과는 응용 프로그램 디렉토리에 oauth_consumer의 작업 복사본을 설치하는 것이 었습니다. 일단이 애플리케이션 내부에 내 소비자를 추가하면 모든 것이 예상대로 작동했습니다.

+0

... 또 다른 문제는 URL 끝에 필수 "/"사이의 불일치입니다. 요청에 여분의 % 2F가 있으면 서명이 무효화됩니다. –

0

@Ricardo와이 오류에 문제가있는 다른 사람 ("대답"에 대해 유감스럽게도 아직 의견이 없습니다), 제공되는 테스트 사례를 따라 내 서명을 생성하여이 오류를 피할 수있었습니다 피스톤 코드로. 예 :

>>> from piston.oauth import * 
>>> from piston.models import * 
>>> consumer = Consumer.objects.get(id=1) 
>>> oaconsumer = OAuthConsumer(consumer.key, consumer.secret) 
>>> request = OAuthRequest.from_consumer_and_token(oaconsumer, http_url='http: 
    //localhost:8000/api/oauth/request_token/') 
>>> signature_method = OAuthSignatureMethod_HMAC_SHA1() 
>>> request.sign_request(signature_method, oaconsumer, None) 
>>> request.sign_request(signature_method, oaconsumer, None) 
>>> request.parameters 
{'oauth_nonce': '64379482', 'oauth_timestamp': 1297147940, 'oauth_consumer_key': u'8aZSFj3W54h8J8sCpx', 'oauth_signature_method': 'HMAC-SHA1', 'oauth_version': '1.0', 'oauth_signature': 'kGSLCZjYzAHXsa8f9sL52Kq1F2w='} 

여기에서 브라우저에서 이러한 매개 변수를 사용하십시오. "oauth_token_secret = 37VZKRV3fXRLAw5tekZD2bwnMhXqGwgx &의 oauth_token = LRnexBGTNC4nDXpv9M & oauth_callback_confirmed = true"로 생성 http://localhost:8000/api/oauth/request_token/?oauth_nonce=64379482&oauth_timestamp=1297147940&oauth_consumer_key=8aZSFj3W54h8J8sCpx&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&oauth_signature=kGSLCZjYzAHXsa8f9sL52Kq1F2w=

마틴은 "/"샘플 코드 또는 서명을 렌더링 할 URL 중 하나에서 "잘못된을 떠나, 지적

".

관련 문제