KrbException: 자격 증명을 생성할 수 없습니다. (63) - 서비스 크레딧 없음

KrbException: 자격 증명을 생성할 수 없습니다. (63) - 서비스 크레딧 없음

openjdkMicrosoft SQL 데이터베이스에 인증할 때 Kerberos 인증을 사용하기 위해 Oracle Java 1.8.0_91-b14(아님)를 사용하여 Ubuntu 16.04에서 Tomcat 8.0.35를 설정하고 있습니다 . 내가 겪고 있는 문제는 kinit적절한 스위치를 사용하여 적절한 사용자로 실행한 후입니다.

sudo -u tomcat8 kinit -k -t /etc/tomcat8/tomcat8.keytab HTTP/[email protected]

Tomcat의 localhost 로그에 다음 오류가 발생합니다.

Caused by: GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)
Caused by: KrbException: Fail to create credential. (63) - No service creds

내가 달릴 때

sudo -u tomcat8 klist

예상되는 응답을 받았습니다.

root@linux-test2:/home/tbourne# sudo -u tomcat8 klist
Ticket cache: FILE:/tmp/krb5cc_111
Default principal: HTTP/[email protected]

Valid starting       Expires              Service principal
06/23/2016 14:33:10  06/24/2016 00:33:10  krbtgt/[email protected]
        renew until 06/24/2016 14:33:07

Tomcat 시작 중에 패킷을 캡처하면 전달된 서비스/인스턴스 이름이 krbtgt/OUR.DOMAIN.LOCAL위에서 언급한 기본 주체일 것으로 예상됩니다. serverSpn데이터베이스 연결 문자열에 옵션을 설정 하면 위와 같은 결과가 나타납니다.

해당 옵션을 제거하면 serverSpn다른 주체 이름이 사용됩니다. 안타깝게도 각 Tomcat 인스턴스에는 고유한 로그인(따라서 고유한 SPN)이 필요하기 때문에 해당 이름을 사용할 수 없습니다.MSSQLSvc/[email protected]

데이터베이스 연결 문자열은 다음과 같습니다.

property.db.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
property.db.jdbcUrl=jdbc:sqlserver://sql-server.our.domain.local:1434;databaseName=DBAUTH2;integratedSecurity=true;authenticationScheme=JavaKerberos;serverSpn="HTTP/[email protected]"

Microsoft JDBC 드라이버 버전 4.2를 다운로드했고 Tomcat이 이를 사용하고 있습니다.

데이터베이스에 인증할 때 Tomcat이 올바른 주체 이름을 보내지 않는 이유를 이해할 수 없습니다. 어떤 통찰력이라도 대단히 감사하겠습니다.

도움이 된다면 krb5.iniTomcat krb5.conf및 기타 구성을 게시할 수 있습니다.jaas.conf

답변1

Kerberos 구성 파일( /etc/krb5.conf)은 대소문자를 구분하므로 default_realm이름을 소문자로 변경하세요.이 문제를 일으킬 것이다.

관련 정보