2011-02-03 3 views
3

나는 Django로 작성된 응용 프로그램의 중앙 로그인 시스템에서 MediaWiki wiki와 Roundup bugtracker를 사용하고 있습니다. 현재 제가 생각하고있는 방법은 Mediawiki (https://bitbucket.org/toml/django-mediawiki-authentication/src)에 AuthDjango 확장을 사용하고 Roundup과 비슷한 것을 해킹하는 것입니다. 이 메소드는 Django에서 세션 아이디 (쿠키에서 가져온)를 User 인스턴스에 매핑하는 SessionProfile 모델을 생성하고 MediaWiki/Roundup은 Django 데이터베이스에 직접 쿼리하여 데이터에 액세스합니다.사용자 데이터를 손상시키지 않으면 서 Django, MediaWiki 및 Roundup을 중앙 로그인 하시겠습니까?

세 가지 응용 프로그램 모두에서 로그인, 세션 및 로그 아웃 프로세스가 쉽게 통합된다는 이점이 있습니다. 그러나 내가 가지고있는 문제는 Django 데이터베이스에 대한 자격 증명을 저장 한 MediaWiki/Roundup에 의존하며 MediaWiki 또는 Roundup 셸 계정에 대한 액세스 권한은 기본 Django 응용 프로그램에 비해 의도적으로 덜 엄격하다는 것입니다 (현재 한 명 Django 제작 액세스 권한이 있음). 따라서 MediaWiki/Roundup 인스턴스의 관리자 (즉, 셸 액세스 권한) 또는 원격 공격을 통해 침입 한 사람은 잠재적으로 주 사이트의 사용자 계정을 도용 할 수 있습니다.

내 질문은 : 누구든지이 시스템의 로그인 메커니즘을 통합하는 더 좋은 방법을 알고 있습니까? 또는 미디어 위키/라운드 업에 Django 데이터베이스에 대한 보안 액세스 권한을 부여하면서 MediaWiki 쉘 액세스 권한이있는 사용자가 악용 가능성을 최소화하려면 어떻게해야합니까?

답변

2

직접 DB 액세스를 제공하는 대신 Django를 사용하여 로그인, 쿼리 세션 유효성 및 사용자 쿼리, 로그 아웃과 같은 필요한 작업 만 수행 할 수있는 (JSON/XML/whatever) 웹 서비스를 만들 수 있습니다. 이렇게하면 Django만이 데이터베이스의 데이터를 편집 할 수 있습니다.

그러면 Mediawiki와 Roundup은 HTTP (S) 호출을 통해 Django 앱 (잠겨있을 수 있습니다. 예를 들어, 3 개의 앱이 모두 동일한 서버에서 실행중인 경우에만 내부적으로 액세스 할 수 있음)에 연결하여 어떤 사용자 특정 세션과 연결되어 있습니다.

로그인 및 로그 아웃 기능을 수행하기 위해 사용자를 Django 앱으로 리디렉션하는 것이 더 좋습니다. 그런 식으로 Mediawiki와 Roundup은 사용자 자격 증명에 전혀 액세스 할 수 없으며 유효한 세션 ID를 제공하는 경우에만 사용자 정보를 검색 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 우리는 마지막 제안과 비슷한 것으로 끝났는데, 로그인시 사용자를 Django로 리디렉션하지만 사용자가 로그인했는지 여부를 결정하기 위해 직접 DB 액세스 경로를 사용하기로 결정했지만 별도의 MySQL 계정을 사용했습니다 엄격한 사용 권한이 설정되어 있습니다. 그렇게하면 해당 계정을 통해 액세스 할 수있는 유일한 데이터는 어쨌든 사이트에서 공개적으로 액세스 할 수있는 데이터입니다. – pythonian4000

관련 문제