2010-06-29 4 views
30

로그인을 위해 Google Apps를 사용하는 회사의 인트라넷 장고 프로젝트 (GAE를 사용하지 않음)에서 작업하고 있습니다. 그래서 내 사용자가 자신의 Google 계정 로그인을 사용하여 내 django 프로젝트에 로그인 할 수있게하고 싶습니다. Oauth도 작동 할 지 모르지만 OpenID가 적절하다고 생각하십니까?django 프로젝트를 Google Apps 계정에 연결하기위한 openid/oauth 라이브러리는 무엇입니까?

나는 외부 로그인 시스템에 장고의 인증 시스템을 연결하기 위해 거기에 비슷한 이름의 라이브러리를 많이 참조하십시오

다음은 통합에 관한 것입니다. 사용자가 기본 django 시스템 대신 Google 계정으로 로그인하게하십시오. django의 권한 모델을 관리 시스템과 같은 것으로 유지하십시오. 그래서 우리가 로그인하기 전에 보지 못했던 새로운 계정을 처음으로 django에 자동으로 새로운 사용자 레코드를 만드는 것을 의미한다고 생각합니다.

이 프로젝트를 사용해 본 경험이있는 사람이라면 누구에게 가장 효과적 일 것이라고 조언 해 줄 수 있습니까? 또는 당신이 그 (것)들을 시도하는 경우에 어느 것이에 가장 활동적이거나 기능적인 충고? 감사!

+0

Google은 OpenID 지원을 중단했으며 대부분의 답변이 더 이상 작동하지 않습니다 (또는 2015 년 4 월에 작업이 중단됨). 이 질문을보십시오 : http://stackoverflow.com/questions/27040648/which-django-openid-library-works-with-new-google-openid –

답변

17

나는 마지막으로이 작업을 가지고, 그래서 여기에 이전 답변이 도움이 때부터 내 자신의 질문에 답변 해 드리겠습니다하지만 전체 이야기를하지 않습니다.

django-openid-auth은 실제로 설치하고 사용하기가 쉽습니다. README 파일은 매우 명확합니다. 그냥 표준 구글 계정을 사용하려는 경우 (예 : @ gmail.com 주소) 당신은과 settings.py에서 그것을 구성 :

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

그러나 당신이 "애플 리케이션을 구글"계정을 사용하려는 경우, 즉 Gmail을 호스팅 자신의 회사 도메인에서보다 복잡합니다. 내 세부 사항은 this question입니다. Google Apps 계정을 사용하려면 settings.py를 다음과 같이 구성하십시오.

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com' 
# replace example.com with your hosted google apps domain 

미래에는이 방법이 효과적 일 수 있지만 현재는 그렇지 않을 수 있습니다. 이 문제는 django-openid-auth가 의존하는 python-openid에 있습니다. python-openid의 표준 빌드는 Google에서 사용중인 일부 프로토콜 확장을 이해하지 못합니다. (구글이 프로토콜을 확장해야하는 이유는 무엇입니까? http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains을 파헤 다시보고하십시오. 행운을 빈다.) 그러므로 여러분은 여기에있는 python-openid에 adieu의 패치를 사용할 필요가 있습니다 : http://github.com/adieu/python-openid

기존의 python-openid에 이것을 설치하십시오. 이제는 효과가 있습니다. 그것은 당신이 '직원'또는 기본적으로 일어나지 않을 것입니다 관리자를 사용하는 '슈퍼 유저'인 ​​오픈 ID 사용자 계정이 필요로하기 때문에

OPENID_USE_AS_ADMIN_LOGIN 설정에주의해야합니다. 따라서 openid를 활성화하고, django에서 계정을 생성하기 위해 openid로 로그인 한 다음 이전 관리자 계정을 사용하여 수퍼 유저로 자신의 openid 계정을 표시 한 다음 비 openid 관리자를 비활성화하는 2 단계 프로세스를 수행해야합니다 접속하다.

한 가지 더 : 도메인 관리자가 도메인에 대한 openid 로그인을 사용 설정해야 도메인이 작동합니다. 컨트롤이에있다 http://www.google.com/a/cpanel/example.com/SetupIdp

+1

2 일 이상 저에게 도움이되었습니다. 맥주 조심해! –

3

나는 django-openid-auth을 사용했습니다. 잘 작동하면 처음 서명 할 때 사용자 계정을 만들 수 있습니다. 당신은 또한 django admin 패널에서 openid login을 사용자 계정과 연결할 수 있습니다.

0

나는 Django socialregistration을 사용하여 Google 계정, Facebook, Yahoo 및 기타 다른 OpenID 사이트를 쉽게 연결할 수 있다고 생각했습니다. 당신은 다음처럼 링크로 공급자를 제공해야합니다

<a href="/socialregistration/openid/redirect/?openid_provider={{ 'http://yahoo.com'|urlencode }}"><img src="{{MEDIA_URL}}/images/yahoo.png"/></a>

0

그들은 모두 거의 동일하다. 나는 django-authopenid을 좋아한다. 그것은 훌륭한 문서를 가지고 있으며 매우 사용하기 쉽습니다. 그것은 당신이 원하는 것을 정확하게 수행 할 것이고 django-openid (내가 시도한 유일한 다른 것)보다 더 잘 할 것입니다.

HTH

1

나는 이것이 늦은 대답 인 것을 안다. 그러나 나는 유사한 물건을하고있다. 그리고 나는 단지 django-socialregistration를 발견했다. 기본적으로 OAuth, OpenID, Facebook Connect 등이 있습니다. 다른 옵션과 달리 이것은 많은 프로젝트에서 활발하게 개발되고 사용되는 것으로 보입니다.

관련 문제