Настройка единого входа для IBM Lotus Connections в среде Kerberos

В этой статье мы обсудим конфигурацию решения единого входа на основе Kerberos из ПК Microsoft Windows в систему IBM Lotus Connections, работающую на сервере приложений IBM WebSphere.

Ян Чао Фэн, инженер-программист, IBM

Ян Чао Фэн (Yang Chao Feng) работает над IBM Lotus Connections в лаборатории разработки программного обеспечения IBM China в Пекине. С ним можно связаться по адресу: yangcf@cn.ibm.com.



Ли Шен Шуан, инженер-программист, IBM

Ли Шен Шуан (Li Sheng Shuang) работает над IBM Lotus Connections в лаборатории разработки программного обеспечения IBM China в Пекине. С ней можно связаться по адресу: lishengs@cn.ibm.com.



Юй Сяо Фэн, штатный инженер-программист, IBM

Юй Сяо Фэн — штатный инженер-программист с богатым опытом работы над Web-решениями в лаборатории разработки программного обеспечения IBM China в Шанхае. С ним можно связаться по адресу: yuxiaof@cn.ibm.com.



09.02.2011

Примечание редактора: Эта тема вам хорошо знакома? Хотите поделиться опытом? Примите участие в вики-программе по IBM Lotus.

Введение

Прежде чем начать разговор о настройке единого входа в IBM Lotus Connection, нужно рассмотреть некоторые идеи, а именно: Kerberos и SPNEGO. Kerberos – это разработанный MIT сетевой протокол проверки подлинности компьютера, который позволяет узлам, взаимодействующим по незащищенной сети, надежно доказать друг другу свою идентичность. Протокол проверки подлинности Kerberos версии 5 - это стандарт RFC (Request For Comments).

SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) - это псевдомеханизм GSSAPI, который используется для согласования одного из ряда возможных реальных механизмов. Его наиболее известной областью применения является расширение аутентификации Microsoft HTTP Negotiate. В число взаимодействующих субмеханизмов входят NTLM (NT LAN Manager) и Kerberos, оба они используются в Microsoft Active Directory. Подробнее см. в разделе "Ресурсы".

Для обеспечения единого входа (single sign-on - SSO) Lotus Connections может использовать механизм WebSphere Application Server SPNEGO TAI (Trust Association Interceptor), предоставляя пользователям возможность, открывая рабочий стол Microsoft Windows, автоматически получать доступ к функциям в Lotus Connections - без необходимости отдельной проверки подлинности.

На рисунке 1 показан поток данных запрос/ответ в среде WebSphere Application Server SPNEGO.

Рисунок 1. Блок схема потока данных SPNEGO
Бок схема потока данных SPNEGO

Подробнее о WebSphere Application Server SPNEGO TAI можно узнать в Информационном центре.

В этой статье мы проиллюстрируем, как предоставить единый вход пользователям Lotus Connections на основе схемы, приведенной на рисунке 2.

Рисунок 2. Схема установки SPNEGO для Lotus Connections
Схема установки SPNEGO для Lotus Connections

Active Directory и Kerberos KDC (центр распространения ключей) размещены на системе Microsoft Windows Server 2003 Enterprise Edition. Клиентская система Microsoft Windows – это Windows-система пользователя с установленными браузерами и другими приложениями. Сервер Lotus Connections 2.5 – это среда Lotus Connections 2.5, использующая в качестве LDAP-каталога Active Directory; сервер Lotus Connections 2.5 может представлять собой многоузловой кластер или отдельный узел. В этой статье мы используем сервер Lotus Connections 2.5 в системе Microsoft Windows.


Предварительные действия на машине с Active Directory и Kerberos KDC

Прежде чем мы сможем приступить, системные администраторы должны решить на машине с Active Directory и Kerberos KDC несколько предварительных задач.

Установка Active Directory на Microsoft Windows 2003

Процесс установки Active Directory на Windows 2003 Server Enterprise Edition описан в документе http://technet.microsoft.com/en-us/library/aa998088.aspx. После успешной установки Active Directory убедитесь, что службы системы центра распространения ключей Kerberos в списке Services настроены правильно. Дважды щелкните на службе Kerberos Key Distribution Center и выберите свойства Центра распространения ключей Kerberos, как показано на рисунке 3. Убедитесь, что в поле Startup type выбрано значение Automatic (оно выбирается по умолчанию).

Рисунок 3. Свойства Центра распространения ключей Kerberos
Свойства Центра распространения ключей Kerberos

Служба KDC позволяет пользователям подключиться к сети с помощью протокола аутентификации Kerberos V5. Если эта служба остановлена, пользователи не могут войти в домен и получить доступ к службам. В системе без поддержки KDC (не контроллер домена) поле Startup type службы KDC заблокировано.

Вы можете узнать больше о службе Microsoft Windows KDC.

Можно также узнать, как изменить Записи реестра протокола Kerberos и ключи конфигурации KDC в Microsoft Windows Server 2003. В данной конфигурации мы используем значения по умолчанию.

Установите DNS-сервер на свою систему Windows 2003, выбрав значения по умолчанию на шаге 9 этого процесса. На странице DNS Registration Diagnostics выполните следующие действия:

  1. Нажмите кнопку Install and configure the DNS server on this computer, and set this computer to use this DNS server as its preferred DNS server.
  2. (Установить и настроить DNS-сервер на этом компьютере и выбрать этот DNS-сервер в качестве предпочитаемого DNS-сервера.)
  3. Нажмите кнопку Next (Далее).
  4. Теперь на этой машине Microsoft Windows 2003 Server работает служба DNS. Дважды щелкните на службе DNS Server, чтобы открыть окно свойств DNS-сервера, показанное на рисунке 4. Убедитесь, что в поле Startup type выбрано значение Automatic (оно выбирается по умолчанию).
Рисунок 4. Окно свойств DNS-сервера
Окно свойств DNS-сервера

Синхронизация времени для среды Kerberos

В качестве контроллера домена используется Microsoft Windows Server 2003 с Active Directory.

Если синхронизация времени не составляет проблемы для вашей корпоративной интрасети, вы можете игнорировать этот раздел.

Kerberos требует, чтобы часы участвующих хостов были синхронизированы. Мандаты имеют срок действия, и если часы хоста не синхронизированы с часами сервера Kerberos, проверка подлинности завершается неудачно.

В качестве сервера времени часто используется контроллер домена, и для синхронизации времени с контроллером домена на участвующих машинах сервера Lotus Connections запускается задача Windows Schedule. На рисунке 5 показан пример задачи, которая каждую минуту вызывает файл TimeSyn.bat.

Рисунок 5. Запланированная задача Windows для синхронизации времени
Запланированная задача Windows для синхронизации времени

В нашем примере пользователю необходимо создать пакетный файл с именем TimeSyn.bat в каталоге C:\. Если example.yourdomain.com - это контроллер домена, а NTP – сервер времени, то код TimeSyn.bat выглядит, как показано в листинге 1.

Листинг 1. Код TimeSyn.bat
w32tm /config /manualpeerlist:acme.yourdomain.com.com,0x8 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync

Установка инструментов поддержки Microsoft Windows

Установка инструментов поддержки Microsoft Windows на Windows 2003 Server Enterprise Edition.

Этот инструментарий необходим для выполнения команды ktpass на контроллере домена, чтобы установить SPN учетной записи службы и сгенерировать файл keytab.

Можно получить подробную информацию о том, как протокол Kerberos работает в Microsoft Windows ServerВ 2003.

Настройка сервера Lotus Connections для поддержки среды Kerberos. Когда предварительные задачи решены, можно приступить к настройке сервера Lotus Connections.


Настройка Lotus Connections для использования Active Directory в качестве репозитория пользователя

Сведения о том, как настроить функции безопасности для использования Active Directory в качестве репозитория пользователя и как заполнить базу данных профилей, приведены в Информационном центре Lotus Connections.

Создание учетной записи службы для хранения SPN в Active Directory

Для идентификации сервера Lotus Connections в среде Kerberos требуется SPN (Service Principal Name). Для хранения этого SPN в Active Directory нужна учетная запись службы.

Чтобы создать учетную запись службы, войдите в систему контроллера домена, перейдите в меню Manage Your Server - Domain Controller (Active Directory) - Manage users и компьютеры and computers in Active Directory (Управление пользователями и компьютерами в Active Directory) и нажмите кнопку.

На странице Account убедитесь, что выбраны опции User cannot change password (Пользователь не может изменить пароль) и Password never expires (Пароль никогда не истекает), как показано на рисунке 6.

Рисунок 6. Новые свойства учетной записи пользователя
Новые свойства учетной записи пользователя

Установка SPN и создание файла keytab

Выполните команду ktpass в контроллере домена, чтобы установить SPN для учетной записи службы и сгенерировать файл keytab:

ktpass –princ <SPN> -out <path_to_keytab> -mapuser <account_name>
-mapOp set –pass <account_password>

Здесь:
<SPN> - имя принципала службы Kerberos.

Принципал Kerberos состоит из трех частей: primary, instance и realm. Формат типичного принципала Kerberos - primary/instance@REALM. Если Lotus Connections установлен на системе SVTLCSPNEGO.cn.example.com, и имя домена CN.EXAMPLE.COM, то SPN будет HTTP/SVTLCSPNEGO.cn.example.com@CN.EXAMPLE.COM.

  • <path_to_keytab> - место, где будет храниться файл keytab.
  • <account_name> - имя учетной записи службы.
  • <account_password> - пароль доступа к имени учетной записи службы.

Предположим, что учетная запись пользователя, созданная на шаге 1, это lcserver01, и что пароль учетной записи службы - password1. Файл keytab нужно сохранить как C:\SVTLCSPNEGO.keytab, так что команда будет выражена следующим кодом:

ktpass -princ HTTP/SVTLCSPNEGO.cn.ibm.com@CN.IBM.COM -out
c:\SVTLCSPNEGO.keytab -mapuser lcserver01 -mapOp set -pass Passw0rd1

Выход этой команды показан в листинге 2.

Листинг 2. Выход команды ktpass
Targeting domain controller: SVTLCSPNEGO.cn.ibm.com
Using legacy password setting method
Successfully mapped HTTP/SVTLCSPNEGO.cn.ibm.com to lcserver01.
WARNING: pType and account type do not match. This might cause problems.
Key created.
Output keytab to c:\SVTLCSPNEGO.keytab:
Keytab version: 0x502
keysize 68 HTTP/SVTLCSPNEGO.cn.ibm.com@CN.IBM.COM ptype 0 (KRB5_NT_UNKNOWN) vno 4 ety
pe 0x17 (RC4-HMAC) keylength 16 (0x5858d47a41e40b40f294b3100bea611f)

В кластере Lotus Connections в качестве имени экземпляра в имени принципала службы Kerberos достаточно выбрать имя сервера IBM HTTP или имя виртуального хоста (для выполнения функций Lotus Connections пользователи обращаются к серверу IBM HTTP или виртуальному хосту). Нет необходимости генерировать файл keytab во всех узлах кластера Lotus Connections.

Настройка SPNEGO TAI на сервере приложений WebSphere

Настройте SPNEGO TAI в консоли администрирования WebSphere Application Server, выполнив следующие действия:

  1. Перейдите в меню Security - Secure administration, applications, and infrastructure и разверните пункт Web Security. Нажмите кнопку Trust association.
  2. Выберите значение Enable trust association, чтобы разрешить TAI.
  3. Выберите Interceptors - com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl - Custom properties.
  4. Добавьте специальные свойства, показанные в листинге 3.
    Листинг 3. Специальные свойства для SPNEGO TAI
    com.ibm.ws.security.spnego.SPN1.hostName=< hostname>
    com.ibm.ws.security.spnego.SPN1.NTLMTokenReceivedPage=<
    TAIRedirectPage_location>
    com.ibm.ws.security.spnego.SPN1.spnegoNotSupportedPage=<
    TAIRedirectPage_Location>
    com.ibm.ws.security.spnego.SPN1.filter=request-url!
    =/seedlist/authverify;request-url!=/seedlist/
    server;request-url!=/seedlist/myserver;request-url!=noSPNEGO
    com.ibm.ws.security.spnego.SPN1.filterClass=
    com.ibm.ws.security.spnego.HTTPHeaderFilter

Здесь:

  • <hostname> - имя сервера, к которому обращается Lotus Connections (например, имя сервера IBM HTTP или имя виртуального хоста).
  • <TAIRedirectPage_Location> - место в локальной файловой системе, где создается страница переадресации SPNEGO TAI, например, file:///Z:/share/TAIRedirect.html.

Этот HTML-файл нужно создать вручную. Содержащийся в нем код показан в листинге 4.

Листинг 4. Страница переадресации SPNEGO TAI TAIRedirect.html
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.0 Transitional//EN">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html">
<!--
Примечания:
	- Этот файл должен передаваться с незащищенного Web-сайта. 
    Иначе, его можно загрузить из файловой системы WebSphere Application Server.
	- Любые встроенные изображения/javascript/css НУЖНО загружать из незащищенного 
	Web-сайта.
	- Этот файл загружается один раз при инициализации WebSphere Application Server. 
	Если в этот файл необходимо внести изменения, Application Server нужно 
	перезапускать.
	- Этот файл возвращается всякий раз, когда SPNEGO TAI получает токен NTLM для 
	ЛЮБОГО приложения в ячейке. 
    Иными словами, данный файл является общим для всех приложений.  
	Однако, используя Javascipt document.location, можно получить оригинальный URL 
	и сделать переадресацию в этот URL, добавив текст "?noSPNEGO" - вызвав таким 
	образом стандартный запрос идентификатора/пароля приложения.
-->
<html>
<script language="javascript">
	var origUrl=""+document.location;
 	if (origUrl.indexOf("noSPNEGO")<0) {
		if (origUrl.indexOf('?')>=0) origUrl+="&noSPNEGO";
			else origUrl+="?noSPNEGO";
	}
	function redirTimer() {
		self.setTimeout("self.location.href=origUrl;",0);
	}
</script>

<META HTTP-EQUIV = "Pragma" CONTENT="no-cache">
<script language="javascript">
	document.write("<title> Redirect to "+origUrl+ " </title>");	
</script>
<head>
</head>
<body onLoad="redirTimer()"/>
</html>
  1. Нажмите кнопку ОК, чтобы сохранить изменения.

На рисунке 7 показан снимок экрана реальной установки.

Рисунок 7. Снимок экрана консоли администратора WebSphere со специальными свойствами SPNEGO TAI
Снимок экрана консоли администратора WebSphere со специальными свойствами SPNEGO TAI

В листинге 5 приведен пример кода JACL, который выполняет настройку WebSphere SPNEGO TAI из интерфейса wsadmin. Назовите файл ConfigTA.jacl и выполните его следующим образом:

wsadmin -f ConfigTA.jacl

Не забудьте заменить значение com.ibm.ws.security.spnego.SPN1.hostName своей реальной переменной конфигурации.

Листинг 5. Настройка ConfigTA.jacl для WebSphere SPNEGO TAI
###################################################
proc saveConfig {} {
	global AdminConfig
	$AdminConfig save
}
proc configTA {} {
	global AdminConfig
	
	set trustAssocConfigId [$AdminConfig list TrustAssociation]
	set trust_attrib {}
	
	set matchFound 0
	set	trust_assocEnabled y
	set	trust_interceptorClassName com.ibm.ws.security.spnego.
	TrustAssociationInterceptorImpl
	
 if {$trust_assocEnabled != {}} {
		if {[regexp $trust_assocEnabled y]} {
			lappend trust_attrib [list enabled "true"]
		} else {
			lappend trust_attrib [list enabled "false"]
		}
		$AdminConfig modify $trustAssocConfigId $trust_attrib 
	}
	if {$trust_interceptorClassName != {}} {
		set listOfTAI [$AdminConfig list TAInterceptor]
		foreach tai $listOfTAI {
			set className [$AdminConfig showAttribute
			 $tai interceptorClassName]
			if {[string compare $className 
			$trust_interceptorClassName] == 0} {
				set matchFound 1
				###
				break
			}
		}
	}
	if {$matchFound == 1} {			
		set interceptorConfigId $tai		
		###################################################
		set trust_propertyName com.ibm.ws.security.spnego.SPN1.hostName
		#replace with your IHS host
		set trust_propertyValue < !! please replace with your IHS host !!>
		set trust_propertyRequired false
		set options_attrib {}		
		lappend options_attrib [list name $trust_propertyName]
		lappend options_attrib [list value $trust_propertyValue]
		lappend options_attrib [list required $trust_propertyRequired]	

		$AdminConfig modify $interceptorConfigId [list 
		[list trustProperties [list $options_attrib]]]
		set trustAttrs [$AdminConfig showall $interceptorConfigId]
		puts stdout "trustAttrs=$trustAttrs"
		###################################################
		set trust_propertyName com.ibm.ws.
		security.spnego.SPN1.filterClass		
		set trust_propertyValue com.ibm.ws.
		security.spnego.HTTPHeaderFilter
		set trust_propertyRequired false
		set options_attrib {}

		lappend options_attrib [list name $trust_propertyName]
		lappend options_attrib [list value $trust_propertyValue]
		lappend options_attrib [list required $trust_propertyRequired]	

		$AdminConfig modify $interceptorConfigId [list [list trustProperties
		[list $options_attrib]]]
		set trustAttrs [$AdminConfig showall $interceptorConfigId]
		puts stdout "trustAttrs=$trustAttrs"
		###################################################
		set trust_propertyName com.ibm.ws.security.spnego.SPN1.filter
		set trust_propertyValue "request-url!=/seedlist/authverify;request-url!=
		/seedlist/server;request-url!=/seedlist/myserver;request-url!=noSPNEGO"
		set trust_propertyRequired false
		set options_attrib {}

		lappend options_attrib [list name $trust_propertyName]
		lappend options_attrib [list value $trust_propertyValue]
		lappend options_attrib [list required $trust_propertyRequired]		

		$AdminConfig modify $interceptorConfigId [list [list trustProperties 
		[list $options_attrib]]]
		set trustAttrs [$AdminConfig showall $interceptorConfigId]
		puts stdout "trustAttrs=$trustAttrs"
		###################################################
		set trust_propertyName com.ibm.ws.security.spnego.
		SPN1.spnegoNotSupportedPage
		set trust_propertyValue file:///z:/TAIRedirect.html
		set trust_propertyRequired false
		set options_attrib {}

		lappend options_attrib [list name $trust_propertyName]
		lappend options_attrib [list value $trust_propertyValue]
		lappend options_attrib [list required $trust_propertyRequired]	

		$AdminConfig modify $interceptorConfigId [list [list trustProperties 
		[list $options_attrib]]]
		set trustAttrs [$AdminConfig showall $interceptorConfigId]
		puts stdout "trustAttrs=$trustAttrs"
		###################################################
		set trust_propertyName com.ibm.ws.security.spnego.
		SPN1.NTLMTokenReceivedPage
		set trust_propertyValue file:///z:/TAIRedirect.html
		set trust_propertyRequired false
		set options_attrib {}

		lappend options_attrib [list name $trust_propertyName]
		lappend options_attrib [list value $trust_propertyValue]
		lappend options_attrib [list required $trust_propertyRequired]	

		$AdminConfig modify $interceptorConfigId [list [list trustProperties 
		[list $options_attrib]]]
		set trustAttrs [$AdminConfig showall $interceptorConfigId]
		puts stdout "trustAttrs=$trustAttrs"
		###################################################

	}	 
	
}
#############################################################
# Main procedure
#############################################################
puts stdout "Run like this: wsadmin -f ConfigTA.jacl"

puts ">configTA"
configTA
saveConfig

Создание файла конфигурации Kerberos

Прежде чем использовать SPNEGO TAI в сервере приложений WebSphere, необходимо создать файл конфигурации Kerberos. Сначала скопируйте файл keytab на сервер, где установлен Lotus Connections. Затем запустите сценарий createKrbConfigFile с помощью утилиты командной строки wsadmin, введя команду, показанную в листинге 6.

Листинг 6. Команда wsadmin для создания файла конфигурации Kerberos
$AdminTask createKrbConfigFile 
 { 
  -krbPath <appserver>\java\jre\lib\security\krb5.conf 
  -realm <REALM> 
  -kdcHost <kdc_hostname> 
  -dns <dns_hostname> 
  -keytabPath <path_to_keytab>
 }

Здесь:

  • <appserver> - путь к WebSphere Application Server, но не к Lotus Connections.
  • <REALM> - Kerberos realm, должен набираться только прописными буквами.
  • <kdc_hostname> - имя хоста центра распространения ключей.
  • <dns_hostname> - имя DNS-сервера.
  • <path_to_keytab> - местонахождение файла keytab, сгенерированного в контроллере домена.

Включение WebSphere SPNEGO TAI

Для того чтобы включить SPNEGO TAI, войдите в консоль администратора WebSphere Application Server и перейдите в меню Servers - Application servers. Выберите имя сервера (как правило, server1), разверните пункт Java and Process Management и выберите Process Definition - Java Virtual Machine - Custom Properties.

Добавьте два специальных свойства:

com.ibm.ws.security.spnego.isEnabled = true
java.security.krb5.conf =<path_to_krb5.conf>

Если Lotus Connections установлен на нескольких экземплярах сервера, этот шаг необходимо повторить для всех экземпляров.

В листинге 7 приведен пример кода Jython, который решает эту задачу из интерфейса wsadmin. Назовите файл configspnegojvm.py и выполните следующий код:

wsadmin -lang jython -user wasadmin -password wasadmin -f configspnegojvm.py
Your_Cell_Name Your_Node_Name Your_ServerInstance_Name.

Листинг 7. Сценарий configspnegojvm.py для включения специальных свойств JVM SPNEGO
def configspnegojvm(cellName, nodeName, serverName):
 global AdminConfig

 krb5conf = "C:/IBM/WebSphere/AppServer/java/jre/lib/security/krb5.conf" 
 javasrv = AdminConfig.getid("/Cell:" + cellName + "/Node:" + nodeName + 
 "/Server:" + serverName + "/")

 # Checking for existence of server
 print "Checking for existence of server " + serverName
 if len(javasrv) == 0:
 print "Error -- server not found for name " + serverName + " :: /Cell:" + 
 cellName + "/Node:" + nodeName + "/Server:" + serverName + "/"
 return
 else:
 print "OK. " + javasrv

 #======================add JVM Custom Properties=====================
 javaproc = AdminConfig.list('JavaProcessDef', javasrv)
 prop = AdminConfig.list('Property', javaproc)
 jvmp = AdminConfig.list('JavaVirtualMachine', javaproc)

 if (prop.find("com.ibm.ws.security.spnego.isEnabled") >= 0):
 		print "INFO: JVM properties seem already exist:"
 		print prop
 		return
 AdminConfig.create('Property', jvmp, [['name', 'com.ibm.ws.security.
 spnego.isEnabled'], ['value', 'true'], ['required', 'false']])
 AdminConfig.create('Property', jvmp, [['name', 'java.security.krb5.conf'], 
 ['value', krb5conf], ['required', 'false']]) 
 AdminConfig.save()
 print "==========Current JVM Custom Properties=========="
 prop = AdminConfig.list('Property', jvmp)
 print prop
#Main:
#./wsadmin -lang jython -user wasadmin -password wasadmin -f configspnegojvm.py 
Your_Cell_Name Your_Node_Name Your_ServerInstance_Name

if (len(sys.argv) != 3):
 print "This script requires 3 parameters"
 print "e.g.:./wsadmin -lang jython -user wasadmin -password wasadmin -f 
 configspnegojvm.py Your_Cell_Name Your_Node_Name Your_ServerInstance_Name" 
else:
 cellName = sys.argv[0]
 nodeName = sys.argv[1]
 serverName = sys.argv[2]

 print "cellName: " + cellName
 print "nodeName: " + nodeName
 print "serverName: " + serverName
 print
 configspnegojvm(cellName, nodeName, serverName)

Настройка Ajax proxy для LtpaToken cookie

Чтобы настроить прокси Ajax на замещение LtpaToken cookies, добавьте в файл proxy-config.tpl следующую часть. Для решения этой задачи сначала воспользуйтесь утилитой wsadmin, чтобы извлечь файлы конфигурации, а затем добавьте следующие данные и проверьте конфигурацию. Чтобы изменения вступили в силу, нужно перезагрузить экземпляры сервера. См. листинг 8.

Листинг 8. Параметры настройки proxy-config.tpl для Ajax-замещения LtpaToken cookie
<proxy:cookies>
 <proxy:cookie>JSESSIONID</proxy:cookie>
 <proxy:cookie>LtpaToken</proxy:cookie>
 <proxy:cookie>LtpaToken2</proxy:cookie>
</proxy:cookies>

Настройка правил перезаписи HTTP для выхода в незащищенный URI

Установите правила перезаписи URL в файле конфигурации IBM HTTP Server с именем httpd.conf, чтобы выйти на незащищенную Web-страницу, иначе SPNEGO автоматически повторит аутентификацию пользователя для входа. Выполните следующие действия:

  1. Откройте файл httpd.conf на сервере IBM HTTP и раскомментируйте следующие строки (удалите знаки #):
    #LoadModule rewrite_module modules/mod_rewrite.so
  2. Затем добавьте код, приведенный в листинге 9.
Листинг 9. Правила перезаписи HTTP
RewriteEngine On
RewriteCond %{REQUEST_URI} /(.*)/ibm_security_logout(.*)
RewriteCond %{QUERY_STRING} !=logoutExitPage=<your-logout-url>
RewriteRule /(.*)/ibm_security_logout(.*)
 /$1/ibm_security_logout?logoutExitPage=<your-logout-url>
 [noescape,L,R]

Здесь:

<your-logout-url> - незащищенный URL, куда пользователь будет перенаправлен после выхода. Это незащищенный URL, чтобы предотвратить аутентификацию SPNEGO.

Не забудьте настроить правила перезаписи URL и для HTTP, и для HTTPS.


Настройка браузера клиента для использования SPNEGO

Пользователям, прежде чем они смогут воспользоваться услугами Lotus Connections в среде Kerberos, необходимо настроить свои клиенты.

Подключение клиентской системы пользователя к домену

Сначала клиентская система пользователя подключается к домену Значение DNS-серверв клиентской системы устанавливается в качестве адреса контроллера домена в окне свойств TCP/IP, как показано на рисунке 8.

Рисунок 8. Свойства TCP/IP в клиентской системе
Свойства TCP/IP в клиентской системе

Затем проследуйте по ссылке http://support.microsoft.com/kb/295017, чтобы подключиться к домену.После того как клиент успешно установит соединение с доменом, администратор контроллера домена может увидеть вновь добавленного члена в окне Users and Computers Active Directory, как показано на рисунке 9.

Рисунок 9. Список компьютеров, принадлежащих домену
Список компьютеров, принадлежащих домену

Настройка браузера клиента пользователя

Во-вторых, пользователи должны настроить свой браузер на работу с SPNEGO.

Для Microsoft Internet Explorer выполните следующие действия:

  1. В окне Internet Explorer window выберите Tools - Internet Options – Security (Сервис - Свойства обозревателя – Безопасность).
  2. Выберите значок местной интрасети и нажмите кнопку Sites (Узлы).
  3. В открывшемся окне нажмите кнопку Advanced (Дополнительно). В поле Add this Web site to the zone (Включить узел в зону) введите Web-адрес хоста с тем, чтобы можно было включить единый вход (SSO) для Web-сайтов из списка, отображаемого в области Web-сайтов.
  4. Нажмите кнопку Close (Закрыть), а затем кнопку ОК, чтобы завершить этот шаг и закрыть окно местной интрасети.

    Рисунок 10. Параметры настройки местной интрасети
    Параметры настройки местной интрасети
  5. В разделе Security level (Уровень безопасности) для этой зоны нажмите кнопку Custom Level (Другой). В открывшемся окне Security Settings (Параметры безопасности) выделите User Authentication - Logon (Проверка подлинности пользователя - Вход в систему) и выберите вариант Automatic logon only in Intranet zone (Автоматический вход в сеть только в зоне интрасети). Нажмите кнопку OK, чтобы закрыть окно параметров безопасности. См. рисунок 11.

    Рисунок 11. Настройка параметров безопасности для местной интрасети
    Настройка параметров безопасности для местной интрасети
  6. В окне Internet Options (Свойства обозревателя) перейдите на вкладку Advanced (Дополнительно) и выберите Security settings (Параметры безопасности). Убедитесь, что выбран параметр Windows Authentication (requires restart)[Разрешить встроенную проверку подлинности Windows (требуется перезапуск)]. См. рисунок 12.

    Рисунок 12. Настройка свойств обозревателя
    Настройка свойств обозревателя
  7. Нажмите кнопку ОК. Перезапустите браузер Internet Explorer, чтобы активировать эту конфигурацию.

При использовании браузера Mozilla Firefox выполните следующие действия:

  1. Откройте Firefox.
  2. В адресной строке введите about:config.
  3. В поле Filter (Фильтр) введите network.n.
  4. Дважды щелкните на .negotiate-auth.trusted-uris. Этот параметр содержит список сайтов, которые допущены к участию в проверке подлинности SPNEGO с помощью браузера. Введите через запятую имена или URL-адреса доверенных доменов.

    ПРИМЕЧАНИЕ: значение параметра network.negotiate-auth.trusted-uris нужно установить, как показано на рисунке 13.

    Рисунок 13. Настройка браузера Mozilla Firefox
    Настройка браузера Mozilla Firefox
  5. Если установленное решение SPNEGO использует новую функцию делегирования прав Kerberos, дважды щелкните на network.negotiate-auth.delegation-uris. Этот параметр содержит список сайтов, которым браузер может делегировать право авторизации пользователей сервера. Введите через запятую имена или URL-адреса доверенных доменов.
  6. Нажмите кнопку ОК. Конфигурация отобразится в новой редакции.
  7. Перезапустите браузер Firefox, чтобы активировать эту конфигурацию.

Доступ к Lotus Connections с единым входом в среде Kerberos

После выполнения всех указанных действий пользователи смогут работать с Lotus Connections через единый вход. Им достаточно войти в свои системы, и у них не будет никаких проблем при использовании функций Lotus Connections. На рисунке 14 приведен снимок с экрана реальной установки. Пользователь Aamir_000_000 входит в свой клиент Windows (который подключился к домену, управляемому контроллером домена), открывает браузер Firefox, вводит адрес главной страницы Lotus Connections и автоматически входит в Lotus Connections.

Рисунок 14. Автоматически загруженная начальная страница Lotus Connections
Автоматически загруженная начальная страница Lotus Connections

Отладка

Если при использовании Lotus Connections в среде SPNEGO возникли какие-либо проблемы, можно включить трассировку SPENGO и Kerberos с помощью следующих параметров:

Настройка специальных параметров JVM

com.ibm.security.jgss.debug = all
com.ibm.security.krb5.Krb5Debug = all

Logs and trace setting

com.ibm.ws.security.*=all: com.ibm.ws.security.spnego.*=all


Заключение

Эта статья знакомит читателей с концепцией и настройкой единого входа SPNEGO Microsoft Windows для Lotus Connections 2.5, предлагая подробные объяснения по каждому шагу процесса настройки. Приведенные в статье листинги с примерами кода, полезными для автоматизации работы системного администратора, проверены группой на тестовой системе.

Эти же шаги по настройке можно применять и с другими Web-приложениями.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Lotus
ArticleID=626113
ArticleTitle=Настройка единого входа для IBM Lotus Connections в среде Kerberos
publish-date=02092011