Decidimos que a combinação de adicionar "ClearPass" ao CAS e modificar a configuração do Exchange seria muito difícil de manter, então nossa solução final é algo como a solução squirrelmail que não gostamos.
Ou seja, enviamos HTML assim para o usuário ( $something
geralmente significa uma variável que já escapou corretamente) de um botão que eles pressionam em nosso portal interno. Esta é a versão em que a vanguarda está simplesmente fazendo um passe direto:
<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>
Principalmente, isso é de copiar o formulário de login e transformar tudo em campos ocultos, mas é necessário alterar o URL da ação de /owa/auth.owa
para /owa/auth/owaauth.dll
.
Também tentamos ter prioridade na autenticação do OWA, eis o formulário para isso (o <body onLoad=...>
e o resto é basicamente o mesmo):
<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>