saslauthd
XMPP 서버 설정을 시도했지만 prosody
어딘가에서 막혔습니다. 나는 다음 문서를 사용했습니다.
- http://blogs.mafia-server.net/nur-bahnhof/2013/12/prosody-authentification-ldapactivedirectory/
- http://prosody.im/doc/cyrus_sasl
- https://wiki.debian.org/InstallingProsody
내 문제는 연결할 수 없다는 것입니다. XMPP 클라이언트는 인증 정보를 교환할 때 항상 어딘가에서 멈춰 있습니다.
성공적으로 테스트되었습니다 testsaslauthd
:
testsaslauthd -u theuser -p "$pw"
0: OK "Success."
나는 이것이 /etc/saslauthd.conf
이 경우 파일이 정확하다는 것을 의미한다고 생각합니다.
/를 사용하여 sasl-sample-server
테스트합니다 sasl-sample-client
(다른 터미널에서 호출하고 붙여넣기 S:
와 C:
줄 복사).
root@xmpp:~# sasl-sample-server -s "xmpp" -m plain
Forcing use of mechanism plain
Sending list of 1 mechanism(s)
S: cGxhaW4=
Waiting for client mechanism...
C: U......................=
got 'PLAIN'
sasl-sample-server: SASL Other: Password verification failed
sasl-sample-server: Starting SASL negotiation: user not found (user not found)
<terminates>
root@xmpp:~# sasl-sample-client -s xmpp -a theuser
service=xmpp
Waiting for mechanism list from server...
S: cGxhaW4=
recieved 5 byte message
Choosing best mechanism from: plain
returning OK: theuser
Password:
Using mechanism PLAIN
Preparing initial.
Sending initial response...
C: U......................=
Negotiation complete
Username: theuser
SSF: 0
Waiting for encoded message...
testsaslauthd
다른 도구 조합으로 사용자를 찾을 수 없는데 왜 성공하는지 이해할 수 없습니다 .
그것을 실행한 후 /usr/sbin/saslauthd -d
나는 에 있습니다 /var/log/auth.log
. 아마도 그것이 문제일 것입니다. 하지만 아무리 노력해도 잘못된 인수를 제공하는 항목을 찾을 수 없습니다.
Dec 2 15:42:14 xmpp sasl-sample-server: auxpropfunc error invalid parameter supplied
Dec 2 15:42:14 xmpp sasl-sample-server: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
Dec 2 15:42:14 xmpp sasl-sample-server: ldapdb_canonuser_plug_init() failed in sasl_canonuser_add_plugin(): invalid parameter supplied
Dec 2 15:42:14 xmpp sasl-sample-server: _sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb
Dec 2 15:42:20 xmpp sasl-sample-client: ldapdb_canonuser_plug_init() failed in sasl_canonuser_add_plugin(): invalid parameter supplied
Dec 2 15:42:20 xmpp sasl-sample-client: _sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb
Dec 2 15:42:34 xmpp sasl-sample-server: DIGEST-MD5 common mech free
또한 options 없이 여러 메서드를 sasl-sample-server
사용하는 목록을 찾았 지만 파일에서 명시적으로 메서드를 선택했습니다 .sasl-sample-client
-m
/usr/lib/sasl2/xmpp.conf
PLAIN
pwcheck_method: saslauthd
mech_list: PLAIN
아마도 경로가 잘못되어 혹시라도 파일을 복사해 두었을 수도 /etc/sasl/xmpp.conf
있습니다 /etc/sasl2/xmpp.conf
. 불행하게도 Debian 8의 경로를 명확하게 설명하는 문서를 찾을 수 없습니다.
게다가 testlauthd는 서비스에 관심이 없는 것 같습니다.
root@xmpp:~# testsaslauthd -s xmpp -u theuser -p "$pw"
0: OK "Success."
root@xmpp:~# testsaslauthd -s nonexistingservice -u theuser -p "$pw"
0: OK "Success."
원인을 찾기 위해 또 무엇을 할 수 있는지 아시나요?
고쳐 쓰다:
분명히, 나는 파일 접근이 ldap 모드에서 일어나서는 안 된다고 생각합니다 sasl-sample-server
. /etc/sasldb2
이 도구가 구성에 관심이 없고 LDAP를 지원하지 않을 가능성이 있습니까? 추적의 출력:
stat("/etc/sasldb2", {st_mode=S_IFREG|0640, st_size=12288, ...}) = 0
open("/etc/sasldb2", O_RDONLY) = 3
fcntl(3, F_GETFD) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
read(3, "\0\0\0\0\1\0\0\0\0\0\0\0a\25\6\0\t\0\0\0\0\20\0\0\0\10\0\0\0\0\0\0"..., 512) = 512
close(3) = 0
답변1
해결책을 찾았습니다.
우선: sasl-sample-server
LDAP가 어떤 방식으로도 지원되지 않는 것 같아서 잘못된 길로 가고 있습니다. 인간과 대화하지 않는 것 같지만 saslauthd
자체 구현이 있습니다. 따라서 -a ldap
options 에 신경 쓸 수 없습니다 /usr/sbin/saslauthd
.
그래서 운율로 직접 테스트를 시작했습니다. 로깅을 디버그로 설정한 후 구성 파일의 모든 경로가 xmpp.conf
잘못되었음을 발견했습니다. 그러나 경로는 아니지만 서비스 이름이 변경되었습니다. 다음 팁을 찾았습니다.http://prosody.im/doc/cyrus_sasl:
LDAP에 대해 인증하도록 Prosody 설정(블로그 게시물)
- 이 게시물은 xmpp.conf를 사용하지만 이제 이름은 prosody.conf입니다(위의 cyrus_application_name 참조).
따라서 최종 경로는 /usr/lib/sasl2/prosody.conf
(여전히 Debian 8)이고 내용은 여전히 동일합니다.
pwcheck_method: saslauthd
mech_list: PLAIN
이 변경 후 마침내 xmpp를 사용하여 로그인할 수 있었습니다.