2010-06-22 3 views
2

Google appengine python에 애플리케이션을 작성 중입니다. Appengine 환경의 제한된 지원으로 인해 외부 전용 서버에 일부 기능을 구현해야합니다. 외부 서버 및 appengine을 통해 로그인 정보를 보존 할 수있는 인증 메커니즘이 있습니까?여러 서버에서 인증 유지

+1

사용자를 다른 서버로 보내야합니까? 사용자를 대신하여 App Engine과 통신하여 백엔드로 사용할 수 없습니까? –

답변

2

아마 당신은이 같은 작업을해야 할 시스템 :

  1. 사용자가 어떤 세션 쿠키 세트와 '다른'서버를 방문, 서버는 앱 엔진 애플리케이션에 대한 특별 URL로 사용자를 리디렉션을 - 다음 단계의 URL을 제공하는 '다음'쿼리 문자열 매개 변수 (# 3에서 설명)를 사용/인증합니다.
  2. App Engine이/authenticate에 대한 요청을 받으면 사용자가 거기에 로그인되어 있는지 확인합니다. 일치하지 않으면 로그인하라는 메시지를 표시 한 다음 사용자 세션에 대한 토큰을 생성하고 두 서버에서 공유하는 비밀 키를 사용하여 HMAC에 서명하고 1 단계에서 제공된 URL로 사용자를 리디렉션합니다 HMAC는 쿼리 문자열에 포함됩니다.
  3. '다른'서버가 (# 1 단계에서 지정한) 특수 URL에 대한 요청을 받으면 HMAC가 공유 암호를 사용하여 일치하는지 확인하고 일치하는 경우 자체 세션 지원을 사용하여 쿠키를 설정합니다 도메인의 사용자 브라우저에서 그때부터 사용자를 추적 할 수 있습니다.
  4. '기타'서버가 사용자에 대한 추가 정보를 얻고 자한다면 App Engine 서버와 공유하는 API를 사용하여 제공된 토큰을 사용하여 사용자에 대한 추가 정보를 대역 외 요청할 수 있습니다 및 공유 된 비밀.

이것은 OAuth가 사용하는 절차와 매우 유사하지만 사용자에게는 완전히 비대화 형입니다. 또한 Google 계정과 같은 SSO 시스템이 세션을 다른 신뢰할 수있는 당사자에게 '전송'하는 절차이기도합니다.

관련 문제