2011-12-14 1 views
0

내 웹 응용 프로그램의 사용자 데이터베이스에 대해 인증하기 위해 external_auth를 사용하여 ejabberd를 설정했습니다. 내가 원하는 것은 사이트 운영자를위한 MUC (대화방)를 만들고 다른 모든 사용자를 제외하고 해당 사용자를 채팅에 자동으로 추가하는 것입니다.ejabberd의 외부 인증에서 다중 사용자 대화방 액세스 제어 목록을 얻는 방법

결국 내 사이트의 그룹 기능을 ejabberd의 MUC에도 ​​매핑 할 수 있기를 바랍니다.

ejabberd 용 외부 인증 API는 기본적으로 사용자가 등록되어 있는지 여부와 사용자 이름/비밀번호 조합이 사용자를 성공적으로 인증하는지 여부 만 쿼리 할 수 ​​있도록 세분화 된 액세스 제어를 제공하지 않는 것 같습니다.

MUC에 대한 acl의 유일한 참조는 여기에 있습니다. http://www.ejabberd.im/aclpopulate 하지만 webadmin 인터페이스를 통해 권한을 설정해야하는 것 같습니다.

외부 인증에서 자동으로이 작업을 수행 할 방법이 없습니까?

답변

2

내 자신의 질문에 대답하려면 외부 인증을 사용하여 필요한 것을 수행 할 수없는 것 같습니다. ejabberd 명령을 내 웹 응용 프로그램의 사용자/그룹 수명주기에 통합하는 작업이 끝났습니다.이 작업은 예상했던 것보다 빠르며 외부 인증을 사용하는 것보다 1 배 빠른 속도로 보너스가 추가되었습니다 (ejabberd의 내부 사용자 데이터베이스를 사용하고 ejabberdctl을 사용하여 사용자 만들기, 암호 업데이트, 공유 목록에서 추가 및 제거, muc 만들기).

내가 GitHub의에서 자유롭게 사용할 수 있습니다 ejabberdctl위한 PHP 래퍼를 생성하는 과정을 돕기 위해 :

https://github.com/tomlancaster/Ejabberd-Wrapper-PHP

당신이 원하는대로 사용하고 남용 주시기 바랍니다.

0

자신의 인증 모듈을 사용하는 경우 ejabberd의 인증 프로세스를 리디렉션 할 수 있습니다. ejabberd_auth.erl 파일에서 check_password_with_authmodule/3 및 check_password_with_authmodule/5 두 가지 기능을 수정하여 인증을 리디렉션합니다. 인증 모듈에서이 두 함수가 반환 될 때 용어를 되돌립니다.

인증 모듈이 다른 컴퓨터에있는 경우 소켓 연결을 만들어 인증 모듈과 통신하고 결과를 얻은 다음 check_password_with_authmodul 함수에 결과를 반환하십시오.

이 변경 후 ejabberd를 다시 작성하고 시작하십시오.

+0

이미 외부 인증을 사용하는 것과 어떻게 다른가요? 인증은 문제가 아닙니다. 에이엘이야. – TomL