2012-10-22 8 views
1

OAuth2.0을 수행하여 액세스 토큰을 얻은 다음 원격으로 서버에 파일을 전송 한 다음 파일을 업로드하기 위해 POST 요청을 수행하기 만하면됩니다.redirect_uri없이 OAuth 2.0을 사용하거나 복잡한 서버를 설정하지 않고도 OAuth 2.0을 사용할 수 있습니까?

이제 Django 프로젝트를 클라우드에 설치하고 OAuth2를 수행하는 데 너무 게으른 반면 "너무 좋음"lib는 없습니다.

그래서, OAuth2를 정말 요청과 모두를 받아들이는 서버를 설정하지 않고 간단한 파이썬 스크립트로 rauth lib 디렉토리를 사용하여 수행 할 생각입니다 ..

을하지만, 원격 서버 프로파일에, 나는을 제공해야 redirect_url과 물론 rauth 클라이언트 lib 디렉토리에 있습니다.

실제로 클라우드에서 프로젝트를 설정하지 않고이 권한 부여를 수행 할 수있는 방법이 있습니까? 단순히 파이썬 스크립트 만 내가 찾고있는 것입니다.

답변

1

나는 속임수의 저자이자 관리자입니다.

Rauth는 더 이상 redirect_uri을 시행하지 않으므로 제공자가 허용하는 경우 Rauth는 사용을 중지 할 수 있습니다. 그러나 궁극적 인 목표는 서버를 설정하지 않는 경우 공급자가 필요로하는 redirect_uri으로도 가능합니다. 예를 들어, Flask를 사용하여 최소한의 서버를 설치할 수있는 localhost로 리디렉션하거나 공급자가 허용하는 다른 임의의 URL을 리디렉션 할 수 있습니다. Facebook은이 목적으로 https://www.facebook.com/connect/login_success.html을 제공합니다. 그리고 사용하는 제공 업체가 비슷한 구성표를 가지고있을 수도 있습니다. Here's an example은 방탕 한 상태입니다.

또 다른 옵션은 grant_type = password와 함께 Bearer Auth를 사용하는 것입니다. OAuth 2.0 공급자는 모두 이며 무기명 인증을 지원하기 위해을 지원하지만 grant_type 비밀번호를 구현하지 못할 수 있습니다. 이 경우 redirect_uri이 필요하지 않으며 대신 서버에 사용자 자격 증명을 전달하면 액세스 토큰이 반환됩니다. 귀하의 제공 업체가 grant_type 암호를 사용하여 Bearer Auth를 허용하는 경우 이는 아마도 이상적 일 것입니다. Rauth 0.5.3 시도는 기본적으로 Bearer Auth를 사용하기 때문에 grant_type을 전달하면됩니다. 이 기능을 제공하기 전에 업데이트해야합니다.

여기 간단한 예제 :

# assume you have constructed an OAuth2Service object and bound it to `serv` 

params = {'grant_type': 'password', 
      'username': 'foo', 
      'password': 'hunter2'} 

s = service.get_auth_session(params=params) 
r = s.get('https://example.com/api/some/endpoint') 

공급자하고 싶은에 따라, 좀 더 조사가 필요할 수 있습니다. 그러나 이것으로 시작하는 것이 좋습니다.

편집

내가 암호 grant_type에 대한 내 의견은 조금 혼란 생각 : 나는 당신에게 의미하는 것 같다 내가 인증에 액세스 토큰을 부착 의미 여기 무기명 승인에 의한 무기명 인증 (함께 사용해야 머리글 형식), 실제로 당신은하지 않습니다. 엔티티 메소드 [1]에서 자격 증명을 전송하는 것이 좋습니다. 당신이 인증이 예상대로 작동하지 않는 rauth을 사용하고 찾을 수있는 경우는 다음과 같이 무기명 인증을 해제해야 할 수 있습니다

[1] "고객이 확인해야 인증 요청 : 사양에서

s = service.get_auth_session('/some/resource', 
          data={'code': code}, 
          bearer_auth=False) 

베어러 HTTP 인증 스키마와 함께 인증 요청 헤더 필드를 사용하는 베어러 토큰이 있어야합니다. 리소스 서버는이 방법을 지원해야합니다. "

관련 문제