1C: Linux 웹 서버와 Windows 애플리케이션 서버에서 Kerberos 인증 설정하기
Linux 웹 서버에 1C 데이터베이스를 게시하고 Windows 애플리케이션 서버를 사용할 때, 표준 인증 설정 가이드로는 부족한 경우가 많습니다. 애플리케이션 서버의 기술 로그에 웹 서버에서 전달된 사용자 계정이 표시되더라도, 플랫폼은 여전히 로그인 자격 증명을 요구할 수 있습니다. 근본 원인은 1C 애플리케이션 서버를 실행하는 서비스 계정에 대한 SPN 레코드가 없기 때문입니다.
이 세부 사항은 Infostart의 인기 글을 포함한 대부분의 튜토리얼에서 누락되어 있습니다. 해결책은 Linux와 Windows에서 Kerberos 인증을 실험적으로 연구하여 발견되었습니다.
인프라 요구 사항
이 시나리오는 다음을 가정합니다:
- NTLM/Kerberos 모듈이 있는 Linux 기반 웹 서버(Apache/Nginx).
- Windows Server 기반 1C 애플리케이션 서버.
- 계정 관리를 위한 Active Directory(AD).
- 요청을 처리하기 위한 1C 서버의 IIS 또는 유사 서비스.
사전 설정에는 웹 서버를 통해 데이터베이스 게시, 인증 헤더 전달을 위한 mod_auth_kerb(Apache용) 또는 Lua 스크립트가 있는 nginx 구성이 포함됩니다. 1C 로그는 전송된 계정을 보여주지만 인증이 실패합니다.
문제 해결
애플리케이션 서버의 기술 로그를 확인하세요(시작 매개변수: -reg 또는 클러터 콘솔 통해). 다음과 같은 항목을 찾으세요:
{User: domain\username} from web-server
계정이 보이지만 자격 증명 프롬프트가 계속되면 SPN에 문제가 있습니다.
진단 단계:
- 1C 서비스 계정(예:
svc_1c)에 대해setspn -Q /를 실행합니다. - 출력에서 SPN이 없는지 확인합니다.
- NTLM을 지원하는 브라우저(인트라넷 영역의 IE/Edge)를 통해 액세스를 테스트합니다.
- 웹 서버 로그를 확인합니다:
grep -i kerberos /var/log/apache2/error.log.
해결책: SPN 레코드 추가
애플리케이션 서버를 실행하는 서비스 계정에 대한 SPN 레코드를 생성하세요. SPN 값은 임의적입니다—트래픽에서 사용되지 않지만 1C의 내부 인증 로직에 필요합니다.
DC 또는 RSAT가 있는 시스템에서 명령:
setspn -S HTTP/fakespn.svc_1c.domain.local svc_1c
여기서:
HTTP/fakespn.svc_1c.domain.local은 가상의 SPN입니다.svc_1c는 1C 서비스 계정입니다.
확인: setspn -L svc_1c. 추가 후, 애플리케이션 서버를 재시작하고 액세스를 테스트하세요.
자격 증명 프롬프트 없이 인증이 작동합니다. 이유: 1C 플랫폼은 Kerberos/NTLM 토큰을 수락하기 전에 SPN을 확인합니다.
추가 Kerberos 설정
- Linux의 Keytab: 서비스 주체
HTTP/webserver.domain.local에 대한 키를 추가하려면ktutil을 사용하세요. - krb5.conf:
/etc/krb5.conf에서 영역과 KDC를 지정하세요.
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
}
- Apache 구성(mod_auth_kerb):
<Location /1c>
AuthType Kerberos
AuthName "Kerberos Login"
KrblAuthRealms DOMAIN.LOCAL
KrbMethodNegotiate On
KrbsaveCredentials Off
</Location>
핵심 포인트
- SPN은 필수: 가짜 SPN이라도 1C 인증을 해제합니다.
- 디버깅을 위한 로그: 1C 기술 로그와 웹 서버 error.log를 사용하세요.
- 서비스 계정: 적절한 권한이 있는 도메인 계정으로 1C 서버를 실행하세요.
- 테스트: Linux에서
kinit을 사용하여 Kerberos를 확인하세요. - 보안: SPN을 필요한 서비스로만 제한하세요.
— Editorial Team
아직 댓글이 없습니다.