Назад | Перейти на главную страницу

Варианты единого входа для Exchange 2010

Мы работаем над проектом по переносу электронной почты сотрудников из Unix / open-source (курьерский IMAP, exim, squirrelmail и т. Д.) В Exchange 2010 и пытаемся выяснить варианты единой регистрации для Outlook Web Access. Пока что все варианты, которые я нашел, очень уродливы и «неподдерживаемые», и могут просто не работать с Forefront.

Мы уже имеем JA-SIG CAS для единого входа на основе токенов и Шибболет для SAML. Пользователи направляются на простой внутренний портал (на самом деле Perl CGI), который они используют для входа в большинство вещей. У нас есть кластер HA OpenLDAP, который уже синхронизирован с другим доменом AD и будет синхронизирован с доменом AD, который будет использовать Exchange. CAS аутентифицируется по LDAP. Портал аутентифицируется по CAS. Shibboleth аутентифицируется с помощью CAS, но получает дополнительные данные из LDAP. Мы движемся в направлении аутентификации веб-служб с помощью CAS или Shibboleth. (Учащиеся уже используют Google Apps для образования с аутентификацией SAML / Shibboleth)

С Squirrelmail у нас есть ужасный взлом, связанный с этой страницей портала, который аутентифицируется по CAS, получает ваш исходный пароль в виде открытого текста (да, я знаю, зло) и дает вам HTTP-форму, предварительно заполненную всеми необходимыми данными для входа в squirrelmail с помощью javaScript onLoad, чтобы немедленно отправить форму.

Попытка выяснить, что именно возможно с Exchange / OWA, кажется сложной. «CAS» - это аббревиатура для нашего сервера единой регистрации и компонента Exchange. Из того, что я смог сказать, есть надстройка для Exchange, которая поддерживает SAML, но только для объединения таких вещей, как информация о свободном / занятом календаре, а не для аутентификации пользователей. Кроме того, это стоит дополнительных денег, поэтому нет возможности поэкспериментировать с ним, чтобы увидеть, можно ли его уговорить сделать то, что мы хотим.

Наши планы относительно кластера Exchange включают в себя Forefront Threat Management Gateway (новый ISA) в демилитаризованной зоне перед серверами CAS.

Итак, реальный вопрос: удалось ли кому-нибудь выполнить аутентификацию Exchange с помощью CAS (единый вход на основе токенов) или SAML, или с помощью чего-то, что я могу с достаточной вероятностью выполнить аутентификацию с помощью одного из них (например, всего, что будет принимать аутентификацию apache)? С Forefront?

Если это не удается, у кого-нибудь есть несколько советов, как убедить OWA Forms Based Authentication (FBA) позволить нам каким-то образом «предварительно войти в систему» ​​пользователя? (войдите в систему как они и верните файлы cookie пользователю или предоставьте пользователю предварительно заполненную форму, которая автоматически отправляется, как мы это делаем с squirrelmail). Это наименее любимый вариант по ряду причин, но он (едва ли) удовлетворяет нашим требованиям. Из того, что я слышал от парня, внедряющего Forefront, возможно, нам придется настроить OWA на базовую проверку подлинности и создать формы в Forefront для проверки подлинности, так что, возможно, это даже невозможно.

Я нашел CasOwa, но в нем упоминается только Exchange 2007, выглядит немного пугающе, и, насколько я могу судить, это в основном тот же хак OWA FBA, который я рассматривал, чуть более интегрированный с сервером CAS. Также не было похоже, что многие люди добились от этого большого успеха. И это может не работать с Forefront.

Есть также "CASifying Outlook Web Access 2", но это тоже меня пугает и включает в себя настройку сложной конфигурации прокси, которая, скорее всего, сломается. И, опять же, не похоже, что она будет работать с Forefront.

Мне что-то не хватает в Exchange SAML (OWA Federated whatchamacallit), где можно настроить аутентификацию пользователя, а не только авторизацию свободного / занятого доступа?

Мы решили, что сочетание добавления «ClearPass» в CAS и изменения настройки Exchange будет слишком сложным для обслуживания, поэтому наше окончательное решение - это что-то вроде решения squirrelmail, которое нам не понравилось.

То есть мы отправляем HTML-код пользователю ($something обычно означает уже правильно экранированную переменную) от кнопки, которую они нажимают на нашем внутреннем портале. Это версия, в которой forefront просто выполняет прямой проход:

<html>
<body onLoad="javascript:document.forms[0].submit()">
<noscript>
 <h1>Redirecting you to $title</h1>
 <p>If you are not taken to $title within 15 seconds,<br />
    please click the button below:</p>
 </noscript>
 <form method="POST"
       action="https://$exchangehost/owa/auth/owaauth.dll" 
       name="logonForm" 
       enctype="application/x-www-form-urlencoded" autocomplete="off">
   <input type="hidden" name="destination" value="https://$exchangehost/OWA/" />
   <input type="hidden" name="flags" value="0" />
   <input type="hidden" name="forcedownlevel" value="0" />
   <input type="hidden" name="trusted" value="0" />
   <input type="hidden" name="username" value="$uid" />
   <input type="hidden" name="password" value="$password" />
   <input type="hidden" name="isUtf8" value="1" />
   <noscript>
     <input type="submit" value="$title" />
   </noscript>
 </form>
 </body>
 </html>

В основном это связано с копированием формы входа и внесением всего в скрытые поля, но вам нужно изменить URL-адрес действия с /owa/auth.owa к /owa/auth/owaauth.dll.

Мы также попытались сделать так, чтобы передний план выполнял аутентификацию в OWA, вот форма для этого ( <body onLoad=...> а в остальном в основном то же самое):

<form method="post" action="https://$exchangehost/CookieAuth.dll?Logon">
  <input type="hidden" name="curl" value="Z2FowaZ2F" />
  <input type="hidden" name="flags" value="0" />
  <input type="forcedownlevel" value="0" />
  <input type="formdir" value="1" />
  <input type="rdoPblc" value="1" />
  <input type="username" value="$domain\$uid" />
  <input type="password" value="$password" />
</form>

Решение Билла Томпсона на github хорош и занимает видное место в (моей) презентации на конференции Jasig по расширению ClearPass CAS. Запись под названием ClearPass - расширение CAS, позволяющее воспроизводить учетные данные на Vimeo.

Я использую систему единого входа CAS для Exchange 2007.

В MS Exchange IIS CAS Server добавление нового виртуального каталога имеет index.aspx.

По ссылке https://wiki.jasig.org/display/CAS/CASifying+Outlook+Web+Access+2.

bean id="OWAConnection"
   p:host="real-owa-server"
   p:port="443"
   p:scheme="https"
   p:owaauth="/exchweb/bin/auth/owaauth.dll"
   p:owalogon="/exchweb/bin/auth/owalogon.asp"
   p:trusted="4"
   p:flags="4"
   p:destination="/exchange/"

Измените owaauth.dll на этот index.aspx.

Index.aspx будет - принимать пользователя, переходить из CAS через поток входа в CAS - сохранять пользователя, передавать зашифрованный в переменной приложения Когда пользователь успешно аутентифицирован CAS

В login.aspx в MS Exchange OWA настройте переход к вашему index.aspx файл.

Это проверяет вход в систему с помощью CAS, если он не перенаправлен на форму входа в CAS.

Когда пользователь аутентифицирован с помощью CAS, он отправит пользователя и перейдет в ваш индексный файл и сохранится в памяти.

Когда браузер перенаправляет на index.aspx, он проверяет, аутентифицирован ли пользователь CAS, получает имя пользователя из CAS, получает пароль из памяти приложения и аутентифицирует пользователя с помощью owaauth.dll и сохраните cookie в клиентском браузере.

После этого он перенаправляет браузер в OWA.