2013-05-30 1 views
2

Kerberos를 사용하여 사용자를 인증하는 MS SQL Server RDBMS가 있습니다.JDBC MS SQL Server Kerberos Auth

jdbc : sqlserver : // DB_NAME : DB_PORT; integratedSecurity = true으로 db url을 설정하고 경로에 적절한 sqljdbc_auth.dll을 추가하면 모든 것이 작동합니다.

그러나 Java Kerberos 인증을 사용하고 싶기 때문에 * nix 컴퓨터에서도 동일한 코드를 사용할 수 있습니다. SQLSERVER :

그래서 내 DB URL이 JDBC된다 // DB_NAME : DB_PORT;에서 integratedSecurity = true이고, authenticationScheme = JavaKerberos

나는 다음과 같은 예외가 무엇입니까 코드를 실행하고 있습니다 :

 

Exception in thread "main" javax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication 
    at com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:796) 
    at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:667) 
    at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:580) 
 

왜 이런 일이 일어나는 지 알고 계십니까? 나는 jdbc 드라이버가 제공하는 기본 Krb5LoginModule을 사용하고 있다고 덧붙여 야한다.

미리 감사드립니다. authenticationScheme = JavaKerberos를 사용하는 경우

+0

당신이 MS JDBC 또는 Open JTDS를 사용하고 있습니까?를 참조하십시오 – gbn

+0

@gbn MS JDBC를 사용하고 있습니다. sqljdbc4.jar – nikkatsa

+0

@nikkatsa 해결책을 찾았습니까? –

답변

1

MS JDBC 문서는

을 언급, 당신은 SERVERNAME 속성에 정규화 된 도메인 이름 (FQDN)을 지정해야합니다. 그렇지 않으면 Kerberos 데이터베이스에서 서버를 찾을 수 없습니다. 오류가 발생합니다.

그래서 당신의 URL은

jdbc:sqlserver://DB_NAME.domain.net:DB_PORT;integratedSecurity=true;authenticationScheme=JavaKerberos 
+0

사실 전 데이터베이스에 전체 도메인 이름을 사용하고 있습니다. 내가 얻는 오류는 MS 설명서에 지정된 오류와 다릅니다. – nikkatsa

0

당신이 당신의 *의 NIX 시스템에 구성된 커버 로스 서브 시스템 (바람직하게는 MIT Kerberos)를 가지고 있습니까된다? 티켓 부여 티켓 (키 배포 센터)을 사용하여 SQL Server에 대한 추가 인증을 받아야합니다. Wikipedia entry on Kerberos protocol, some guide from MS도 참조하십시오.

+0

그는 ActiveDirectory Kerberos 구현을 사용하고 그의 SQL Server Windows 시스템이 해당 도메인에 등록되어있을 것으로 예상합니다. –

1

login.conf 또는 Krb5LoginModule을 사용하는 해당 구성 파일 내 항목을 제공하지 못했습니다.

0

Windows 시스템에서 코드를 실행하고 있습니까? 이것이 시나리오 인 경우 문제는 레지스트리 항목 AllowTgtSessionKey와 관련 될 수 있습니다. 이 링크 https://msdn.microsoft.com/en-us/library/gg558122%28v=sql.110%29.aspx에서

당신은 다음 intruction을 찾을 수 있습니다 Windows 용 레지스트리에서 1

  1. 설정 AllowTgtSessionKey. 더 내용은 Kerberos protocol registry entries and KDC configuration keys in Windows Server 2003.