Windows 도메인의 Active Directory 서버에 대해 사용자를 인증하는 Ubuntu 16.04에서 실행되는 Flask 서버에 대한 단일 로그온 메커니즘을 구현합니다.authGSSServerInit 매우 느림
플라스크 서버에서 https://github.com/mkomitee/flask-kerberos/tree/master/example의 예제 응용 프로그램을 실행하면 로그인 한 클라이언트 컴퓨터에서 플라스크 서버에 액세스 할 수 있으며 서버는 액세스를 올바르게 협상하고 로그인 한 사용자의 이름을 반환합니다. 그러나 이것은 매우 느리고 약 2 분이 걸립니다.
flask-kerberos
에서 일어나는 과정을 따르면서, 그 과정은 authGSSServerInit
step에서 멈추는 것으로 나타났습니다. 다음과 같은 최소 프로그램을 사용하여 동작을 재현 할 수 있습니다.
import kerberos
rc, state = kerberos.authGSSServerInit("[email protected]")
초기화가 성공적으로 완료되었지만 다시 약 2 분이 걸릴 수 있습니다.
AD 서버에 서비스 사용자 (HTTP/flaskserver.mydomain.local
)를 성공적으로 등록하고 키 테이블을 Flask 서버로 내 보냈습니다. kinit -k HTTP/flaskserver.mydomain.local
을 사용하여 Flask 서버에서 티켓을 부여하는 티켓을 얻을 수 있습니다. 나는 또한 kerberos
라이브러리를 사용하여 파이썬에서 암호를 확인할 수 있습니다
import kerberos
kerberos.checkPassword('username', 'password', 'HTTP/flaskserver.mydomain.local', 'MYDOMAIN.LOCAL'
이 정확하고 거의 즉시 실행됩니다.
kerberos.authGSSServerInit
을 실행하는 데 지연이 발생할 수있는 이유는 무엇입니까? 어떻게 디버깅합니까?
가 촬영 한을 Wireshark를 추적 조사? –
나는 (나는 그 경험이 없기 때문에) 흔적을 찍지 않았다. 그러나 당신의 키워드가 문제를 해결하기 위해 나를 도왔다. 이 스톨은 DNS 역방향 조회가 실패하여 발생 했음이 밝혀졌습니다. 고맙습니다! – Jake