Параметры единого входа для Exchange 2010
Мы работаем над проектом по переносу электронной почты сотрудников из Unix/open-source (курьер IMAP, exim, squirrelmail и т. Д.) В Exchange 2010 и пытаемся выяснить варианты единого входа в Outlook Web Access. Пока что все варианты, которые я нашел, очень уродливы и "не поддерживаются" и могут просто не работать с Forefront.
У нас уже есть JA-SIG CAS для единого входа на основе токенов и Shibboleth для SAML. Пользователи перенаправляются на простой внутренний портал (на самом деле Perl CGI), который они используют для входа в большинство материалов. У нас есть кластер HA OpenLDAP, который уже синхронизирован с другим доменом AD и будет синхронизирован с доменом AD, который будет использовать Exchange. CAS аутентифицируется по LDAP. Портал аутентифицируется против CAS. Shibboleth аутентифицируется с помощью CAS, но получает дополнительные данные из LDAP. Мы движемся в направлении аутентификации веб-сервисов на CAS или Shibboleth. (Студенты уже проходят проверку подлинности по Службам Google для образовательных учреждений 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), где можно настроить аутентификацию пользователя, а не только авторизацию доступа free/busy?
3 ответа
Мы решили, что сочетание добавления "ClearPass" в CAS и изменения настроек Exchange будет слишком сложным в обслуживании, поэтому наше окончательное решение похоже на решение squirrelmail, которое нам не понравилось.
То есть мы отправляем HTML таким образом пользователю ($something
обычно означает уже правильно экранированную переменную) от кнопки, которую они нажимают на нашем внутреннем портале. Это версия, в которой передний план просто выполняет прямую передачу:
<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
и сохранить куки в браузере клиента.
После этого он перенаправляет браузер в OWA.