2010-02-17 4 views
4

우리는 Nginx, Apache, Django 및 Postgres로 배포 된 프로젝트를 보유하고 있습니다.Nginx 및 Apache를 사용하는 임베디드 장치를위한 최상의 빠른 인증 메커니즘

이 프로젝트는 임베디드 디바이스의 많은 수의 5 분 간격으로 서버 (HTTPS)에 로그인하여 서버에 파일을 보낼 수 있습니다. 또한 프로젝트의 WebUI 얼굴에는 일반 사용자가 로그인하여 다른 기능을 수행합니다.

현재 시스템은 임베디드 장치와 일반 (사람) 사용자를 구분하지 않습니다. 장치 수가 적 으면이 메커니즘은 필요한 속도로 잘 작동했습니다. 그러나 장치 수가 증가함에 따라 데이터베이스에 대한 부하가 증가했습니다. 우리는 하루에 약 60000 개의 django_session 항목을 관찰했습니다. 장치에서 보낸 파일을 처리하기 위해 실행하는 가져 오기 스크립트는 들어오는 데이터를 거의 따라 가지 않고 데이터베이스가 많이로드됩니다.

난 그냥 매우 빠르게 장치를 인증하고 텍스트 파일을 보낼 수 있도록 할 수있는 최소한의 인증 메커니즘을 구현하려는. 나는 장고 인증 방법 을 피하고 싶지만 장치의 사용자 이름 - 암호에 대해 auth_user 테이블을 계속 사용하고자합니다. 성능 요구 사항을 감안할 때, nginx를 사용하고 실제로 그림을 아파치를 가져 오지 않고 파일을 받아들이는 어떤 방법이 필요합니다.

이것을 달성하는 가장 좋은 방법은 무엇이라고 생각하십니까? 또한 이러한 대형 임베디드 디바이스 관련 프로젝트가 이러한 유형의 메커니즘에 사용하는 것은 무엇입니까?

+0

임베디드 장치를 얼마나 제어합니까? 어떤 인증이라도 펌웨어를 변경해야하는 것처럼 보입니다. – Robert

+0

임베디드 장치의 수는 매우 높으며 해당 장치 소유자의 개인 정보 문제로 인해 모든 장치를 중앙에서 제어 할 수 없습니다. 현재 장치는 (https) 인증서를 사용하고 은 기본 인증을 사용하여 사용자 이름과 암호를 보냅니다. 현재 구성표를 유지하고 ngnix 수준의 일반 사용자와 장치 간의 연결을 분리하고 싶습니다. 비슷하지만 덜 복잡한 방식으로 장치 인증을 처리합니다. 여기서는 django_session을 사용하고 아파치를 사용할 필요가 없습니다. 이것을 달성 할 수있는 방법이 있습니까? – Sujit

답변

2

그래서 각 임베디드 장치는 django에서 사용자 계정 설정을 가지고 있으며이 오버 헤드를 피하기를 바랍니다. 자사의 임베디드 장치 또는 인간 사용자와 통신 할 때

그래서 첫 번째 질문, 어떻게 백 엔드 알고 있나요? 나는이 정보가 django 시스템에 내장되어 있다고 가정합니다.

그렇다면 django에 전달되기 전에 사용자 이름과 암호를 가로 채고 데이터베이스의 계정 유형을 확인하고 임베디드 장치가 처리하는 응용 프로그램에 아무것도 전달하지 않는 경우 파일을 수락하고 처리하십시오. 당신이 가로 챌 수있는 방법은 당신에게 달려 있습니다. 당신이 원하는 거의 모든 '웹'언어로 할 수 있고, 트래픽 처리 방법을 결정했을 때 리디렉션을 사용할 수 있습니다.

이것을 다시 작성할 기회가 생기면 임베디드 장치에 대한 사용자 이름 암호가있는 이유는 무엇입니까? 임베디드 장치 (단일 목적의 최소 인터페이스)라고 가정하면 SSL 인증서를 식별 할 수있는 알려진 인증서 목록과 비교하여 SSL 인증서를 확인하지 않습니다. 이것은 django 시스템과의 모든 상호 작용을 제거 할 수 있습니다. 알려진 ok 인증서의 은행에 대해 인증서를 확인하기 만하면됩니다.

+0

우리는 모델 상속을 사용하여 임베디드 장치와 인간을 구별합니다. CGI 스크립트를 작성하고 nginx에서 요청을 처리하는 것이 최선의 방법이라고 생각합니다. 의견을 보내 주셔서 감사합니다. – Sujit

1

당신은 컴파일 된 CGI 스크립트 쓸 수 (C 또는 C++에서을?)이 직접 포스트 그레스 데이터베이스에 대해 임베디드 장치를 인증하고, 적절한 방법으로 파일을 저장? 임베디드 장치는 5 분마다 한 번 연결되므로 세션이 필요하지 않습니다.

내가 장고에 대해 잘 모른다는 (포함 된 태그에서이 포착), 그래서 나는 그것의 오버 헤드에 대한 책임이 무엇인지 모른다.

그것은 실제로 C에서 CGI 스크립트를 작성 너무 열심히하지이 간단한 작업 (팀에 당신 또는 누군가 가정은 C를 알고있다).

+0

예, CGI 스크립트와 같은 모양입니다. 나는 우리의 필요를 위해 을 하나 시도 할 것이다. 의견을 보내 주셔서 감사합니다. – Sujit