AD 특성을 쿼리하기위한 Python 서비스 만들기
SASL (DIGEST-MD5)을 통해 Python-LDAP를 사용하여 Linux에서 Python을 실행하는 웹 서비스와 AD를 통합하여 AD 2012 사용자 특성 (구분, 부서, 전화 내선 번호, 전자 메일 등)을 쿼리하고 있습니다. AD 2003에 대한 서비스 관련 문제를 해결 한 후에 새 AD 2012에 대해 SPN 오류가 발생하기 시작했는데 digest-uri가 서버의 SPN과 일치하지 않습니다. 두 서버의 SPN 목록을 상호 참조했으며 서로 동일한 아날로그가 포함되어 있습니다.
오류 : digest-uri가이 서버에 등록 된 LDAP SPN과 일치하지 않습니다
수정?
이것은 다음을 실행하여 수정되었습니다.
setspn -A ldap/<Domain_Name> <Computer_Name>
다음 명령을 실행해도 서비스 계정을 만들면 SPN 오류가 해결되지 않았습니다.
setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>
simple_bind_s ()에는 SPN이 필요하지 않으며 sasl_interactive_bind_s ()에는 SPN이 필요합니다
SPN을 로컬 컴퓨터 SPN 목록에 추가하는 것만 sasl_interactive_bind_s ()를 사용하는 Python-LDAP 서비스에서 작동했습니다. simple_bind_s ()를 사용하면 SPN 단계를 건너 뛸 수 있지만이 메서드는 허용되지 않는 일반 텍스트로 자격 증명을 보냅니다.
그러나 레코드가 사라지기 전에 약 1 분 동안 만 SPN 목록에 남아 있음을 알았습니다. setspn 명령을 실행할 때 오류가없고, 이벤트 로그가 완전히 비어 있고, 중복 된 부분이 없으며, 기본 dn에서 -F 포리스트 전체 검색으로 확인하고 아무것도 확인하지 않았습니다. SPN을 추가하고 다시 추가하고 제거하고 SPN을 객체에서 객체로 이동하여 어디에서 숨어 있지 않은지 확인했지만 두 번째로 객체를 어디에나 추가 한 다음 다시 추가하려고하면 중복을 알립니다. 어딘가에 숨겨진 복제본이 없다고 확신합니다.
해킹
지금은 예약 된 작업을 수행하여 명령을 다시 실행하여 레코드를 목록에 보관하여 서비스가 "SPN Hack"으로 적절하게 작동하도록합니다.
cmd.exe /C "setspn -A ldap/<Domain_Name> <Computer_Name>"
SPN이 목록에서 정리되는 이유를 찾을 때까지
이 특정 AD의 기본 관리자가 아닙니다. 관리자가 AD의 다른 서비스에서 SPN을 동기화하는 서비스를 실행하고 알지 못합니까? 내 직책은 웹 개발자이며 변명이 아니라 Active Directory 문제에 대한 무지를 설명합니다. 나는 AD를 마스터 사용자 DB로 만들겠다고 들었고 많이 읽었지만 SPN이 정기적으로 '덮어 지거나'정리 된 문제가있는 곳을 찾을 수 없으며 관리자는 SQLServer 항목 외부의 SPN에 매우 익숙합니다.
왜 해킹이 필요한가요?
지금까지 내 해킹으로 인해 사용자 또는 서비스에 문제가 발생하지 않았으며 오류가 발생하지 않았으므로 관리자는 실행을 계속하고 계속 볼 것이라고 말합니다. 그러나 구현이 기본으로 제공되는 서비스, 본질적으로 cron hack / shiver를 작성하는 불안정한 상황에 처해 있습니다. 그래서 어떤 도움이라도 감사하겠습니다.
최신 정보
sysadmin과의 대화 후 그는 해킹 위에 서비스를 구축하는 것이 해결책이 아니라고 동의했기 때문에 내 목적으로 사용할 수있는 엔드 포인트 암호화로 로컬 서비스를 스핀 업 할 수있는 권한이 부여되었습니다. . SPN을 지우는 원인을 주시하겠습니다. 로컬 바인드는 Python-LDAP를 사용하는 데 문제가되지 않으며 로컬 서비스는 이미 한 시간 정도 지나면 이미 실행되고 있습니다. 본질적으로 LDAP에 내장 된 기능을 래핑하는 것은 불행하지만 우리가해야 할 일을합니다.