2013-05-30 8 views
2

У меня есть РС SQL Server RDBMS, которая использует Kerberos для аутентификации пользователей.JDBC MS SQL Server Kerberos Auth

Из машины Windows, если я установить дб URL для JDBC: SQLServer: // DB_NAME: DB_PORT; integratedSecurity = истина и добавьте соответствующий sqljdbc_auth.dll к пути, все работает.

Однако я хотел бы использовать аутентификацию Java Kerberos, чтобы иметь возможность использовать тот же код в * nix-машинах.

Так что мой дб URL становится JDBC: SQLServer: // DB_NAME: DB_PORT; integratedSecurity = истина; 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) 
 

Кто-нибудь знает, почему это происходит? Я должен добавить, что я использую по умолчанию Krb5LoginModule, который предоставляется драйвером jdbc.

Заранее спасибо.

+0

Вы используете MS JDBC или Open JTDS? – gbn

+0

@gbn Я использую MS JDBC. sqljdbc4.jar – nikkatsa

+0

@nikkatsa Вы нашли решение? –

ответ

1

В MS JDBC документы говорится

При использовании authenticationScheme = JavaKerberos, необходимо указать полное имя домена квалифицированное (FQDN) в свойстве ServerName. В противном случае произойдет ошибка (сервер не найден в базе данных Kerberos).

Таким образом, ваш URL становится

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

Действительно, я использую полное доменное имя для базы данных. Ошибка, которую я получаю, отличается от той, которая указана в документации MS. – nikkatsa

0

У вас есть подсистемы Kerberos (предпочтительно MIT Kerberos), настроенной на вашей системе * NIX? Требуется, чтобы получить билет на выдачу билетов (от Центр распределения ключей) для дальнейшей аутентификации на SQL Server. См. Также Wikipedia entry on Kerberos protocol, some guide from MS.

+0

Я предполагаю, что он рассчитывает использовать реализацию ActiveDirectory Kerberos, и его система Windows Server Windows зарегистрирована в этом домене. –

1

Вы не смогли предоставить login.conf или запись в этом конфигурационном файле, который использует Krb5LoginModule.

0

Выполнение кода в системе Windows? Если это ваш сценарий, проблема может быть связана с записью реестра AllowTgtSessionKey.

В этой ссылке https://msdn.microsoft.com/en-us/library/gg558122%28v=sql.110%29.aspx вы можете найти следующую intruction:

  1. Набор AllowTgtSessionKey 1 в реестре Windows. Для получения дополнительной информации см Kerberos protocol registry entries and KDC configuration keys in Windows Server 2003.
Смежные вопросы