2012-06-22 2 views
2

GAE에서 비즈니스 앱을 개발하고 싶습니다. 비즈니스 소유자는 어떻게 든 OpenID 아이디어를 좋아하지 않거나 오해하지 않고 로컬 사용자 관리 구현을 고집합니다. 앱의 데이터 저장소에 저장된 로그인 및 비밀번호를 사용하여 등록합니다.GAE에서 "로컬"사용자 관리 구현

"로컬"OpenID 공급자를 사용하여 원하는 것을 구현하고 싶습니다. 가장 간단한 접근 방법 인 것 같습니다. 기존의 OpenID 제공 업체 라이브러리 ("로그인 대화 상자 + 등록 워크 플로")를 "드롭 인"하고 동일한 응용 프로그램에서 사용할 수 있습니까? 예를 들어, 얀 레인 (Janrain)은 그렇게하기 위해 땜질을 많이해야합니까?

이 방법이 아닌 경우 사용자 인스턴스를 직접 만들고 로컬 저장소의 사용자 이름 + 암호를 사용할 수 있습니까? 세션 관리를 어떻게 처리할까요?

죄송합니다, 최고의되지 않은 정말이 문제에 경험하지 오전 정말 주요 비즈니스 주제 :(

+0

필자가 생각하기에 평범하고 간단한 로그인/비밀번호 입력을 작성하고 성공적으로 인증되면 "언 바운드"사용자 인스턴스를 만들고 이메일 주소를 설정하고 "가짜"OpenID를 federated_identity로 사용하고 계속 사용 하시겠습니까? 나는. "user = get_current_user(); 사용자가 없음 인 경우 : user = google.appengine.api.users.User (이메일 = ..., federated_identity = ...)" –

+0

나는 이것에 대해별로 생각하지 않습니다. . 이 동일한 기능을 탐색 할 때 JOIDS (Java Open Id Server)를 사용하여 Java에서 로컬 openid 공급자를 만들려면 하나의 솔루션이 필요합니다. 링크 : http://code.google.com/p/openid-server/. 그래서이 코드를 탐색 해보면 적절한 해결책이 될 수 있습니다. – iMBMT

답변

3

나는 "가상"오픈 ID 공급자를 구현하는 생각에서 사용자 관리에 의해 산만 얻을 날 귀찮게 문제를 해결할 수 있습니다. 현재 로그인 한 사용자가 누구인지에 대한 자신의 쿠키/세션을 저장해야합니다 .Google App Engine에서 수동으로 수행하는 것은 그리 쉽지는 않지만 운좋게도 충분히 처리 할 수있는 프레임 워크가 충분합니다. (gae-sessions은 그 중 하나입니다.)

Google App Engine과 통합 할 수있는 Flask-Login을 살펴 보시기 바랍니다. 플라스크 - L ogin은 보안 세션으로 모든 백그라운드 작업을 처리하는 로그인 관리자를 제공하며 로그인 한 사용자가 누구인지 결정하는 것은 사용자의 몫입니다. 사용자가 특정 사용자에 대한 추가 정보를 저장하는 하나의 User 모델을 갖기 때문에 그녀가 사용자 정의 로그인 (사용자 이름/비밀번호) 또는 OpenID 로그인을 사용하여 로그인했는지는 중요하지 않습니다. 그런 다음 해당 user_db 엔티티를 로그인 한 사용자로 설정해야합니다.

gae-init (면책 조항 : 작성자)는 Google, Facebook & Twitter 로그인을 사용하여 Flask-Login을 사용하는 방법의 예를 확인할 수 있습니다. Facebook과 Twitter는 Google이 제공하는 연합 로그인의 일부가 아닙니다.