fre*_*eit 7 single-sign-on exchange-migration exchange-2010
我们正在开展一个项目,将员工电子邮件从 Unix/开源(courier IMAP、exim、squirrelmail 等)迁移到 Exchange 2010,并试图找出 Outlook Web Access 单点登录的选项。到目前为止,我发现的所有选项都非常丑陋且“无法支持”,并且可能根本不适用于 Forefront。
我们已经有了用于基于令牌的单点登录的JA-SIG CAS和用于 SAML 的Shibboleth。用户被定向到一个简单的内部门户(一个 Perl CGI,真的),他们用来登录到大多数东西。我们有一个 HA OpenLDAP 集群,它已经与另一个 AD 域同步,并将与 Exchange 将使用的 AD 域同步。CAS 针对 LDAP 进行身份验证。门户根据 CAS 进行身份验证。Shibboleth 使用 CAS 进行身份验证,但会从 LDAP 中提取其他数据。我们正朝着让 Web 服务针对 CAS 或 Shibboleth 进行身份验证的方向发展。(学生已经在使用 SAML/Shibboleth 认证的 Google Apps for Education)
使用 Squirrelmail,我们从门户页面链接到一个可怕的黑客攻击,该页面通过 CAS 进行身份验证,获取您的原始纯文本密码(是的,我知道,邪恶),并为您提供一个 HTTP 表单,其中预先填充了所有必要的 squirrelmail 登录详细信息,并使用 javaScript onLoad 东西立即提交表单。
试图确切地找出 Exchange/OWA 的可能性似乎很困难。“CAS”既是我们的单点登录服务器的首字母缩写,也是一个 Exchange 组件。据我所知,有一个 Exchange 插件可以执行 SAML,但仅用于联合诸如忙/闲日历信息之类的内容,而不是对用户进行身份验证。此外,它会花费额外的钱,因此无法对其进行试验以查看是否可以诱使它做我们想做的事情。
我们的 Exchange 集群计划涉及在 DMZ 前端 CAS 服务器中使用 Forefront Threat Management Gateway(新的 ISA)。
所以,真正的问题是:是否有人设法使 Exchange 使用 CAS(基于令牌的单点登录)或 SAML 进行身份验证,或者我可以合理地使用其中之一进行身份验证(例如任何接受 apache 身份验证的内容)?与最前沿?
如果做不到这一点,是否有人有一些技巧可以说服基于 OWA 表单的身份验证 (FBA) 让我们以某种方式“预登录”用户?(以他们的身份登录并将 cookie 传回给用户,或者给用户一个预先填写的表格,该表格会像我们使用 squirrelmail 那样自动提交)。由于多种原因,这是最不受欢迎的选项,但它(勉强)满足我们的要求。根据我从实施 Forefront 的人那里听到的,我们可能必须将 OWA 设置为基本身份验证并在 Forefront 中执行表单以进行身份验证,因此这甚至可能是不可能的。
我确实找到了CasOwa,但它只提到了 Exchange 2007,看起来有点吓人,据我所知,它几乎与我正在考虑与 CAS 服务器稍微集成的 OWA FBA hack 大致相同。看起来也没有很多人在这方面取得了很大的成功。它可能不适用于 Forefront。
还有“ CASifying Outlook Web Access 2 ”,但那个也让我感到害怕,并且涉及设置复杂的代理配置,这似乎更有可能被破坏。而且,再一次,它看起来不适用于 Forefront。
我是否缺少 Exchange SAML(OWA Federated whatchamacallit)中可以配置为进行用户身份验证而不仅仅是忙/闲访问授权的某些内容?
我们认为向 CAS 添加“ClearPass”和修改 Exchange 设置的组合将难以维护,因此我们最终的解决方案类似于我们不喜欢的 squirrelmail 解决方案。
也就是说,我们$something通过用户在我们的内部门户中按下的按钮向用户发送这样的 HTML(通常意味着已经正确转义的变量)。在这个版本中,最前沿只是简单地进行直接传递:
<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>
Run Code Online (Sandbox Code Playgroud)
这主要是通过复制登录表单并将所有内容都放入隐藏字段来实现的,但是您需要将操作上的 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6425 次 |
| 最近记录: |