Как включить аутентификацию Kerberos для удаленного вызова EJB в WebSphere?

Мое приложение представляет собой автономный клиент Swing, вызывающий сеансовые компоненты EJB без сохранения состояния благодаря классическому поиску JNDI и вызовам методов RMI-IIOP. Он запускается как приложение Java WebStart. Моя цель — получить идентификатор пользователя клиента из EJBContextс помощью метода getCallerPrincipalблагодаря единому входу Kerberos между рабочей станцией Windows, ActiveDirectory и сервером WebSphere, работающим в Linux.

Я уже успешно настроил свою ячейку WebSphere в режиме сетевого развертывания для поддержки аутентификации Kerberos благодаря документации информационного центра.

Оба файла krb5.confи krb5.keytabв порядке и протестированы с Linux kinit, klistи wsadmin, $AdminTask validateKrbConfigответы true.

Настройка клиента относится только к файлу JAAS login.configдля включения с помощью свойства системы команд. Моя интуиция подсказывает мне, что этого, вероятно, недостаточно.

Но теперь я не нахожу больше информации для завершения тестового примера:

  • как должна быть настроена среда начального контекста JNDI, чтобы инициировать согласование Kerberos?
  • есть ли другие требования на стороне сервера, такие как защита моего EJB с помощью роли (например, JBoss не требует этого)?

Обновление

Поскольку контейнер клиента JavaEE с ./launchClientне запущен, я установил в своем JNLP необходимые свойства для чтения sas.client.propsи конфигурации входа JAAS. :



Мой wsjaas_client.configпредназначен для Oracle Java, поэтому он содержит:

WSKRB5Login{
    com.sun.security.auth.module.Krb5LoginModule required
       debug=true useTicketCache=true doNotPrompt=true;
};

Мой sas.client.propsсодержит:

com.ibm.CORBA.securityEnabled=true
com.ibm.CORBA.authenticationTarget=KRB5
com.ibm.CORBA.loginSource=krb5Ccache
com.ibm.CORBA.loginUserid=
com.ibm.CORBA.loginPassword=
com.ibm.CORBA.krb5CcacheFile=
com.ibm.CORBA.krb5ConfigFile=C:\\temp\\krb5.conf

На данный момент аутентификация Kerberos не срабатывает: нет TGS для имени участника-службы WAS/myserver.mydomain.comв моем кеше kerberos (либо с рабочих станций Windows, либо с Linux), а соединение JNDI по-прежнему устанавливается анонимно.

Ни сообщений об ошибках, ни предупреждений, ни принципала. Как диагностировать, что не так или чего не хватает?

Обновление от 20 июня 2012 г.

Вот несколько шагов вперед. В моем приложении JNLP, работающем с Oracle Java, я установил следующие свойства для использования IBM ORB и включения полной информации о трассировке и отладке:




Файл TraceSettings.propertiesсодержит

traceFileName=c:\\temp\\traces.log
ORBRas=all=enabled
SASRas=all=enabled
com.ibm.*=all=enabled

Даже после чтения больших частей из WebSphere 7 Security IBM RedBookМне по-прежнему не удается получить инициирующую CSIv2 аутентификацию Kerberos со стороны клиента.

14
задан 15 revs, 2 users 99% 2 December 2015 в 00:52
поделиться