복붙노트

[PYTHON] Google 애플 리케이션 로그인 django에

PYTHON

Google 애플 리케이션 로그인 django에

나는 Google 애플 리케이션과 통합 장고 애플 리케이션을 개발하고있어. 나는 사용자가 자신의 워드 프로세서, 캘린더 및 기타 메뉴에 액세스 할 수 있도록 Google Apps 계정 (Google 호스팅 계정, Google 계정이 아닌 계정)으로 로그인하도록하고 싶습니다.

이를 위해 django_openid_auth (따라서 python-openid)를 다운로드하여 사용하기 시작했습니다.

먼저 테스트하기 위해이 URL을 설정에 사용했습니다.

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'

그리고 그걸로 나는 사용자를 Google 계정 페이지로 리디렉션하여 로그인하고 내 자신의 도메인으로 돌아 왔으며 Google 사용자가 설명하는 인증주기가 성공적으로 완료되었습니다. 그러나 Google 계정에 로그인하려면 거의 사용하지 않아야합니다. 호스팅 된 도메인에 Google 애플리케이션 계정을 가지고 있지만 Google 계정으로 로그인하지 않은 사용자로 로그인하는 것이 좋습니다. 이를 위해 나는 "호스트 된 도메인을위한 OpenID 종점 발견"이라는 발견에 대한 Google 기사를 읽고 앞서 언급 한 설정을 다음과 같이 변경했습니다.

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=<my-domain>.com'

- 분명히 은 내 실제 도메인입니다.)

그러나 백엔드는 다음과 같은 메시지를 보냈다.

조금 디버깅을 해본 결과 python-openid (버전 2.2.4)의 코드가 Google의 응답을 잘못 해석하고 있음을 알았지 만 여기서는 상당히 분실했습니다.

나는 socialwok.com과 puffypoodles.com에서 자신의 도메인에서 작동하는 인증을 보았습니다. 그래서 Google Apps 도메인의 인증주기가 작동하지만, 어떻게 든 python-openid가이를 완료 할 수없는 것으로 확신합니다. 그리고 나는 오래된 구글 계정으로 잘 돌아 간다.)

나는 python-openid를 고쳐야 하는가, 아니면 이것을 고치는 다른 방법이 있는가? 누구든지 순수 django 애플 리케이션 (구글 애플 리케이션 엔진에없는)에서 구글 애플 리케이션으로 로그인 successfuly 관리 했습니까?

해결법

  1. ==============================

    1.http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains에 따르면 Google은 IdP Discovery의 방식을 변경했으며 사용자 XRDS가 약간의 확인을했습니다 Google Apps 사용자는 http://example.com/openid?id=108441225163454056756 형식의 형식으로 openid를 실행하며 사용자에게 자신의 openid 서버를 만들지 않고 요청합니다. 중소 기업의 경우 사람들은 Google Apps를 사용하는 경우 도메인 이름만으로 도메인 아래에서 openid를 얻을 수 있습니다.

    http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains에 따르면 Google은 IdP Discovery의 방식을 변경했으며 사용자 XRDS가 약간의 확인을했습니다 Google Apps 사용자는 http://example.com/openid?id=108441225163454056756 형식의 형식으로 openid를 실행하며 사용자에게 자신의 openid 서버를 만들지 않고 요청합니다. 중소 기업의 경우 사람들은 Google Apps를 사용하는 경우 도메인 이름만으로 도메인 아래에서 openid를 얻을 수 있습니다.

    이는 사람들이 인증을 위해 Google Apps 계정을 사용할 수 있고 앞으로도 인증 백엔드를 변경할 수있는 자체 도메인에서 여전히 공개 키를 제공 할 수 있기 때문에 좋은 접근 방법 일 수 있습니다. 그것은 간단하고 확장 가능하지만 슬프게도 아직 표준이되지 못했습니다. python-openid와 같은 표준 라이브러리를 사용하면 몇 가지 문제가 발생할 수 있습니다.

    이러한 문제를 해결하려면 python-openid를 직접 수정하여 Google의 접근 방식을 따라야합니다.

    나는 이전에 같은 문제에 부딪 혔고 python-openid v2.1.1 패치 버전을 사용했습니다.

    필요한 경우 정리 후 코드를 게시 할 수 있습니다. 그것은 빠른 패치 였으므로 너무 많이 기대하지 마십시오 :)

  2. ==============================

    2.제 생각에는 http://github.com/hudora/django-googleappsauth를 사용해보세요. 하지만 문제를 수정하고 주석을 번역하려고하는 버그를 발견했습니다.

    제 생각에는 http://github.com/hudora/django-googleappsauth를 사용해보세요. 하지만 문제를 수정하고 주석을 번역하려고하는 버그를 발견했습니다.

  3. from https://stackoverflow.com/questions/2313573/google-apps-login-in-django by cc-by-sa and MIT license