2016-09-16 5 views
0

AppEngine에 응용 프로그램을 빌드하고 관리하지 않는 두 개의 다른 AppEngine 서비스와 통신을 시도하고 있습니다. 이 두 서비스는 JSON 데이터를 제공하지만 내 측면에서 인증 한 동일한 사용자 (동일한 조직 내에 있지만 다른 하위 도메인에서 작동하는 애플리케이션)를 사용해야합니다.AppEngine 서비스/도메인 간 프록시시 사용자 유지

Flask와 urllib.fetch를 사용하는 기본 프록시가 작동하지만 요청 중에 AppEngine을 사용하여 인증 된 사용자를 잃어 가고 있습니다.

google.appengine.api.users을 사용하는 경우 users.get_current_user()을 호출 할 때 내 사이트와 대상 측이 동일한 값으로 지정되도록하고 싶습니다. 현재 get_current_user을 호출하면 관련 정보가 내 측면에 표시되지만 대상 측에는 None이 표시됩니다.

헤더에 사용자 자격 증명을 전달하는 방법이 있습니까?

내 urlfetch.fetch 호출은 특별한 아무것도 아니다 : 나는 목적 :이 Cross-Domain Ajax Calls and maintaining session on Google App Engine 유사한 비트가

내 실제 헤더 DICT 정의를 생략하고있어

resp = urlfetch.fetch(url, method=urlfetch.GET, 
          headers=headers, 
          follow_redirects=False) 

주, 그러나 나는 서버 측에서이 모든 작업을 수행하고 있기 때문에 동일합니다.

답변

1

다른 서비스 (GAE의 동일한 프로젝트 내에서도)는 로그인 한 사용자에 대한 정보를 공유하지 않습니다. (엄청나게 어색한) 해결책은 당신이 치고있는 서비스의 app.yaml 파일에 로그인하지 않았다면 login과 redirect를 요구하는 것입니다. 하지만 사용자가 해당 서비스에 로그인했는지 확인하려면 계속해서 해당 페이지를 실제로 열어야합니다 (예 : window.open("https://the-static-page-of-your-service.appspot.com")). 서비스 페이지의 iframe에 정적 페이지를 넣을 수는 없습니다 (Google은 로그인 페이지를 이와 같은 사이트에 삽입하지 않습니다). 사이트가로드 되 자마자이 페이지를 열 수 없습니다. 팝업을 차단하고 차단합니다.) 내가 찾을 수있는 유일한 해결 방법은 "로그인"버튼과 같은 사용자 입력으로이 창을 열어 팝업하는 것입니다.

본질적으로 원하는 것을 실제로 할 수는 없습니다. 다른 인증 솔루션을 살펴 보겠습니다.