我们正在开发一个项目,将员工邮件从Unix /开源(邮件IMAP,exim,squirrelmail等)迁移到Exchange 2010,并尝试找出Outlook Web Access的单点login选项。 到目前为止,我发现的所有选项都非常丑陋,“不可支持”,可能根本不适用于Forefront。
我们已经有了基于令牌的单点login的JA-SIG CAS和SAML的Shibboleth 。 用户被引导到一个简单的内部门户(一个Perl CGI,真的),他们用来login到大多数的东西。 我们有一个已经与另一个AD域同步的HA OpenLDAP集群,并且将与Exchange将使用的AD域同步。 CAS对LDAP进行身份validation。 门户针对CAS进行身份validation。 Shibboleth使用CAS进行身份validation,但从LDAP获取更多数据。 我们正朝着使Web服务对CAS或Shibboleth进行身份validation的方向发展。 (学生已经使用SAML / Shibbolethauthentication的Google Apps for Education)
使用Squirrelmail我们有一个可怕的攻击链接到从CASauthentication的门户网站,得到你原来的明文密码(是的,我知道,邪恶),并给你一个HTTP表单,预先填写所有必要的squirrelmaillogin细节与javaScript onLoad的东西立即提交表格。
试图找出究竟什么是可能的与Exchange / OWA似乎是困难的。 “CAS”既是我们单点login服务器的缩写,也是Exchange组件。 从我所能告诉的是,有一个用于Exchange的插件可以实现SAML,但仅用于联合诸如忙/闲日历信息之类的事情,而不是对用户进行身份validation。 此外,它需要额外的钱,所以没有办法试验,看看它是否可以被诱骗做我们想要的。
我们对Exchange群集的计划包括DMZ前端CAS服务器中的Forefront威胁pipe理网关(新ISA)。
所以,真正的问题是:是否有人设法使用CAS(基于令牌的单点login)或SAML进行validation,或者我可以合理地使用其中的一个validation(比如接受apachevalidation的任何validation)? 用Forefront?
如果不这样做,任何人都有一些提示说服OWA表单身份validation(FBA)让我们以某种方式“预login”用户? (以他们的身份login并将cookie传递给用户,或者向用户提供一个预先填写的表单,像squirrelmail一样自动提交)。 由于多种原因,这是最不喜欢的select,但它(几乎)不能满足我们的要求。 从我从执行Forefront的人那里得知,我们可能必须将OWA设置为基本身份validation,并在Forefront中进行身份validation,因此可能甚至不可能。
我find了CasOwa ,但它只提到了Exchange 2007,看起来有点吓人,而且我可以告诉的几乎是同样的OWA FBA黑客,我考虑稍微集成CAS服务器。 也看起来好像很多人都没有成功。 而且它可能不适用于Forefront。
还有“ 恶化的Outlook Web Access 2 ”,但是也让我感到害怕,并且涉及到build立一个复杂的代理configuration,这似乎更容易中断。 而且,它看起来不像Forefront。
我错过了什么东西与Exchange SAML(OWA联合whatchamacallit)哪里可以configuration做用户身份validation,而不仅仅是空闲/忙碌访问授权?
我们决定将“ClearPass”添加到CAS并修改Exchange设置的组合将难以维护,因此我们的最终解决scheme就像我们不喜欢的squirrelmail解决scheme。
也就是说,我们像这样向用户发送HTML( $something通常意味着一个已经正确转义的variables),这些variables来自我们内部门户中的button。 这是最前沿的版本,只是做一个直传:
<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>
主要是通过复制login表单并将所有内容设置为隐藏字段,但是您需要将操作中的URL从/owa/auth.owa为/owa/auth/owaauth.dll 。
我们也尝试过对OWA进行身份validation,下面是表单( <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>
Bill Thompson 在github上的解决scheme非常好,在ClearPass CAS扩展的(我)Jasig会议演示中有突出performance。 录制名为ClearPass – 允许在Vimeo上进行凭证重播的CAS扩展程序 。
我使用CAS单点login为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通过CASloginstream程 – 保存用户,在应用程序variables中encryption通过当用户通过CASauthentication成功
在MS Exchange OWA上的login.aspx中,configuration为导航到您的index.aspx文件。
如果没有redirect到CASlogin表单,这将使用CAS检查login。
当用户通过CASauthentication时,它将提交用户并传递给你的索引文件并保存到内存中。
当浏览器redirect到index.aspx时,它会检查用户是否已通过CASauthentication,从CAS获取用户名,从应用程序内存中获取密码并使用owaauth.dllvalidation用户,并将cookie保存到客户端浏览器。
之后,它将浏览器redirect到OWA。