2013-11-01 6 views
1

Я использую JCIFS с библиотекой модулей Kerberos (jcifs-krb5-1.3.17) в приложении Java, которое проходит аутентификацию на сервере Windows KDC и после этого пытается получить доступ к общей папке в сети, используя Получен билет в Kerberos.JCIFS + Kerberos + Java 7

Приложение, которое я использую, такое же, что и в примере сайта JCIFS (KerberosAuthExample.java).

При использовании JDK1.6 он отлично работает.

Однако, когда я попытался с помощью JDK1.7 он возвратил следующее исключение:

jcifs.smb.SmbAuthentication: Доступ запрещен.

Я уже пробовал выполнять роль PrivilegedAction, используя объект, полученный из проверки подлинности, но возвращает тот же результат.

Неужели кто-то сталкивается с той же проблемой?

Не могли бы вы помочь мне?

Спасибо заранее,

Stuchi

ответ

0

Путь мы читаем Kerberos Keytab путь отличается jdk7. ниже приведен код для чтения keytab, если мы используем расширенное расширение kerberos.

String keyTabPath = this.keyTabLocation.getURL().toExternalForm(); 

if (runtimeVersion.startsWith("1.7")) 
{ 
     if (keyTabPath.startsWith("file:")) 
     { 
      keyTabPath = keyTabPath.substring(5); 
     } 
} 

Для получения дополнительной информации кода, прочитайте SunJaasKerberosTicketValidator:afterPropertiesSet()

проект JCIFS не активен (последний выпуск в 2011 году), и я не уверен, как он основан на стандарте JAAS (javax.security.auth).

Лучше попробуйте весеннюю охрану для kerberos extenstion. Для получения дополнительной информации о кеберберах с повышенной безопасностью, прочтите главу 12 из Spring Security3-authored by Peter Mularien.

+0

Здравствуйте, Где я могу поместить это в свой код? Вы можете найти мой пример кода ниже: http://pastebin.com/Z1V38fL9 Еще раз спасибо – Stuchi

+0

отредактировал мой ответ. – shatk