Мое приложение является автономным клиентом Swing, вызывающим сеанс бездействия EJB без ограничений beans благодаря классическим вызовам JNDI и вызовам метода RMI-IIOP. Он запускается как приложение Java WebStart. Моя цель - получить идентификатор пользователя клиента из EJBContext
с помощью метода getCallerPrincipal
благодаря Kerberos SSO между рабочей станцией 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:
<property name="java.security.auth.login.config" value="C:\temp\wsjaas_client.config"/>
<property name="com.ibm.CORBA.ConfigURL" value="C:\temp\sas.client.props"/>
My wsjaas_client.config
предназначен для Oracle Java, поэтому он содержит:
WSKRB5Login{
com.sun.security.auth.module.Krb5LoginModule required
debug=true useTicketCache=true doNotPrompt=true;
};
My 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 для SPN WAS/myserver.mydomain.com
отсутствует в кеше кешью (на рабочих станциях Windows или Linux), а соединение JNDI по-прежнему устанавливается анонимно.
Нет сообщения об ошибке, нет предупреждения и, наконец, нет принципала. Как мне диагностировать, что неправильно или не хватает?
Обновление 2012/06/20
Вот несколько шагов вперед. В моем приложении JNLP, работающем с Oracle Java, я установил следующие свойства для использования IBM ORB и включения полной информации о трассировке и отладке:
<property name="org.omg.CORBA.ORBSingletonClass" value="com.ibm.rmi.corba.ORBSingleton"/>
<property name="org.omg.CORBA.ORBClass" value="com.ibm.CORBA.iiop.ORB"/>
<property name="traceSettingsFile" value="C:\temp\TraceSettings.properties"/>
Файл TraceSettings.properties
содержит
traceFileName=c:\\temp\\traces.log
ORBRas=all=enabled
SASRas=all=enabled
com.ibm.*=all=enabled
Даже после прочтения больших частей WebSphere 7 Security IBM RedBook я все еще не могу заставить CSIv2 запускать проверку подлинности Kerberos с клиентской стороны.