Немногим ранее я писал статью, в
которой рассказывал о том, как добавлять поле ввода CAPTCHA образа и
текста в форму входа аутентификации на основе форм в Outlook Web Access
2003. Теперь, когда Exchange 2007 занял свое место на рынке, я получил
множество запросов на написание статьи о том, как сделать это в
Exchange 2007. Хотя процедура в основном схожа с процедурой для OWA
2003 версии, есть несколько важных различий.
CAPTCHA - это аббревиатура для Completely Automated Public Turing test to tell Computers and Humans Apart
(Полностью автоматизированный открытый тест Тьюринга по распознаванию
людей и машин). Нет сомнений в том, что вам приходилось видеть
применение этой технологии на различных веб страницах в виде образа
визуально искаженного слова, которое нужно вписать в поле, доказывая
тем самым, что вы являетесь реальным лицом. Это стало необходимо для
предотвращения действий агентов-роботов, блуждающих сети и ищущих
возможности вставить рекламные сообщения и т.д. Пример такого образа
приведен на рисунке 1. Идея заключается в том, что пользователь-человек
распознает слово 'part', в то время как агент-робот нет.
Рисунок 1: CAPTCHA образ, отображающий слово 'part'"
Аутентификация на основе форм в OWA сама по себе очень надежна и
безопасна, поскольку вам необходимо предоставить действительные
мандаты, чтобы войти, однако добавление к ней подтверждения CAPTCHA
представляет не меньший интерес. В этой статье я покажу вам, как это
сделать путем изменения logon.aspx файла в Exchange. Я решил использовать бесплатный сценарий CAPTCHA, написанный Джонатаном Фистером, который можно скачать с Archreality
. Этот сценарий использует JavaScript, и в отличие от прочих решений не
требует второй страницы.aspx для обработки вводимой формы;
подтверждение осуществляется обозревателем пользователя, прежде чем
мандаты будут отправлены на OWA сервер. Любые сценарии CAPTCHA,
требующие второй страницы, не будут работать с FBA, поскольку нет
возможности вставить что-либо между страницей входа и пользовательским
интерфейсом OWA.
Процедура
Сначала извлеките файлы в подходящее место на сервере. Здесь есть два .js файла и папка с названием cimg, содержащая образы слов, которые будут отображаться на странице регистрации. Разместите извлеченную папку jcap в папку C:\Program Files\Microsoft\Exchange Server\ClientAccess\Owa\auth, как показано на рисунке 2:
Рисунок 2: Извлеченные jcap файлы в auth папке
Далее используйте Explorer, чтобы найти logon.aspx файл, который создает страницы регистрации FBA. Он включает ту же папку auth, а которую вы разместили папку jcap. Прежде чем делать что-либо еще, создайте резервную копию logon.aspx файла.
Нажмите на нем правой клавишей, выберите «Копировать», затем на папке
нажмите правой клавишей и выберите «Вставить». Это создаст копию вашего
logon.aspx файла под названием 'Копия logon.aspx' . Если ваши изменения
окажутся безуспешными, вам нужно будет вернуть этот оригинальный файл,
чтобы восстановить функциональность FBA. Теперь откройте logon.aspx с
помощью блокнота. Я собираюсь вставить образ над кнопкой 'Public
Computer', поэтому нажимаю F3 и ищу текст rdoPblc. Предположив, что вам удалось найти текст, вставляем следующее прямо перед <tr> тэгом:
<script type="text/javascript" language="javascript" src="jcap/md5.js"></script>
<script type="text/javascript" language="javascript" src="jcap/jcap.js"></script><script
type="text/javascript" language="javascript"> function doJcap(){if (jcap() == true){document.forms[0].action = "owaauth.dll"; return true;}elsereturn false}</script><tr><td colspan="2">
Enter the code as it is shown below
<script language="JavaScript">sjcap();</script><noscript>This resource requires a JavaScript enabled browser</noscript></td></tr>
В результате у вас должно получиться то, что показано на рисунке 3:
Рисунок 3: Измененное содержание logon.aspx в блокноте
Далее нажимаем CTRL-HOME, чтобы вернуться в самый верх файла, а затем нажимаем CTRL-F и находим текст <form
(без закрывающей угловой скобки). Допустим, что вы нашли этот тэг
формы, удалите атрибут действия и замените его следующим текстом:
onsubmit="return doJcap();"
Эта часть страницы теперь должна выглядеть, как показано на рисунке 4:
Рисунок 4: Измененный <form> тэг
Теперь сохраните файл обратно на диск и закройте блокнот. Все, что теперь требуется, это маленькое изменение в jcap.js
файле, который был сохранен в C:\Program Files\Microsoft\Exchange
Server\ClientAccess\Owa\auth\jcap . Нажмите правой клавишей на файле
jcap.js и выберите «Изменить». Он должен открыться в блокноте. В
строке, начинающейся с var imgdir, вам нужно изменить путь,
чтобы указать текущее расположение cimg папки. Измените его так, чтобы
начало строки выглядело следующим образом:
var imgdir = "/owa/auth/jcap/cimg/";
Полностью строка выглядит так:
Рисунок 5: Указание пути к файлам образов
Сохраните файл, и все готово. В следующий раз, когда вы откроете
страницу регистрации FBA, она будет выглядеть подобно той, что показана
на рисунке 6. Здесь также показано предупреждение, которое появляется в
случае, если введенный текст не соответствует искаженному тексту
образа, когда вы нажимаете кнопку «Войти».
Рисунок 6: Измененная страница регистрации FBA
Пожалуйста помните, что в силу обновлений в пакетах обновлений и
патчах для Exchange последующие версии logon.aspx файла могут
отличаться от показанной здесь. Однако основные принципы должны
остаться такими же.
Ссылки