Мое приложение представляет собой автономный клиент 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
для включения с помощью свойства системы команд. Моя интуиция подсказывает мне, что этого, вероятно, недостаточно.
Но теперь я не нахожу больше информации для завершения тестового примера:
Обновление
Поскольку контейнер клиента 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 со стороны клиента.