Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > OutlookAnywhere a TMG bez zadávání hesla
leden 29
OutlookAnywhere a TMG bez zadávání hesla

Dalším klasickým problémem při Web Server Publishing přes TMG (Threat Management Gateway 2010) je publikace Outlook Anywhere (dříve RPCoverHTTP/S). Nejsložitější je rozjet to tak, abyste dosáhli Single Sign On (SSO), aby tedy uživatelé, kteří pracují pod svým doménovým účtem už nemuseli podruhé zadávat heslo při spuštění Outlooku. Je to složité, takže to většinou skončí tím, že se prostě smíříte s tím, že se bude muset zadat heslo.

Ale jde to bez zadávání, mám tu zrovna virtuální prostředí z konference, tak to hurá na to. Rozjedeme to komplet včetně technologie Autodiscover. Upozorňuju, že ani Outlook 2010 neumí tento přístup s čipovou kartou. Soudruzi z jůesej zřejmě trošku zaspali dobu :-)

Pro jistotu malý obrázek našeho scénáře:

Hned na začátek řeknu jednu důležitou podmínku. Jesliže publikujete současně OWA i Outlook Anywhere, tak budete potřebovat na TMG minimálně dvě IP adresy na internetové síťovce. OWA a Outlook Anywhere potřebují každý jinou přihlašovací metodu a to s jedním Web Listnerem neuděláte.

Příprava Exchange 2007/2010 CAS serveru

Nejprve je potřeba nastavit korektně Exchange samotný. Client Access Server (CAS) obsahuje několik IIS virtuálních adresářů (virtual directory), které nás v tomto případě zajímají z pohledu OutlookAnywhere technologie:

  • Rpc - adresář RPCoverHTTP služby, do kterého se budou připojovat klienti, aby se podívali do svého mailboxu
  • Oab - zkratka z Offline Address Book, tedy seznam kontaktů, který si Outlook stahuje, aby bylo komu posílat maily
  • Ews - zkratka z Exchange Web Services, což pro klienty představuje hlavně Free-Busy Schedule, tedy možnost dozvědět se, kdy je který uživatel zaneprázdněn v případě, že s ním plánujete schůzku.
  • Autodiscover - toto je adresář technologie, která s Outlook Anywhere přímo nesouvisí, ale stejně to chceme mít v pořádku. Pokud otevřete autodiscover, klienti Outlook i případně ActiveSync se jednoduše sami nakonfigurují a nebudete muset sami zadávat žádné parametry připojení. Kromě své emailové adresy a hesla (ale to jen při úplně prvním vytváření Outlook profilu).

Pro všechny tyto adresáře potřebujeme SSO. Znamená to tedy, že jim musíme zapnout NTLM ověřování. Nemůžeme použít ověřování Negotiate, protože to nefunguje, pakliže jsou klienti mimo doménovou síť. Což je přávě případ Outlook Anywhere, že :-)

Druhá věc, kterou musíme správně nastavit, jsou veřejná jména, která budou klienti používat. Budou zřejmě dvě. Něco jako:

  • oa.gopas.cz - pro přístup Outlook Anywhere. Pokud chcete publikovat ještě současně i OWA, vymyslete si pro obě technologie dvě různá jména. Já používám obvykle mail.gopas.cz pro OWA a potom třeba právě oa.gopas.cz pro Outlook Anywhere.
  • autodiscover.gopas.cz - na tomto jméně bude přístupný autodiscover. Ono to lze udělat i pomocí SRV záznamu v DNS, ale to některé mobily nedokážou, například iPhone, zřejmě zase soudruzi ovocnáři někde udělali chybu.

Třetí věc, kterou byste už měli vědět teď, je že budete potřebovat k oběma jménům TLS Server Authentication certifikát, který bude na TMG. Kupte si veřejný za pár korun a buď si kupte dva, pro každé jméno jeden, nebo můžete mít jen jeden s více jmény v políčku Subject Alternative Name (SAN). Jmen se tam hodí ještě více, například právě pro OWA, nebo SMTP. Já si tedy obvykle kvůli Exchange kupuji jména:

mail.gopas.cz
oa.gopas.cz
autodiscover.gopas.cz
smtp.gopas.cz

V případě certifikátu bych doporučoval vyhnout se hvězdičkovým certifikátům (wildcard certificate) typu . Některé mobily, dokonce ještě dnes, s tím mají problémy a takovým certifikátům nevěří. Do pole Subject certifikátu s více jmény bych dal to jméno, které budou používat právě mobily. Opět je fakt, že některé telefony prostě neumí použít pole SAN a dívají se jen do Subject.

Tyto tři věci je potřeba nastavit na Exchange, navíc pomocí PowerShellu. Následující skript to provede, jediné co musíte upravit jsou jména. Tedy přesněji, tento skript to provede korektně v případě, že máte jen jeden CAS server (nebo NLB cluster). Pokud jich máte více, musíte si to upravit podle svých potřeb. V proměnné $certPrincipalName je jméno, které je v certifikátu, tu jsem dal právě hvězdičkové jméno, abych to trošku odlišil.

$rpcFQDN = 'mail.sevecek.com'
$autodiscoFQDN = 'autodiscover.sevecek.com'
$certPrincipalName = '*.sevecek.com'

Get-AutodiscoverVirtualDirectory | Set-AutodiscoverVirtualDirectory `
  -ExternalURL 'https://autodiscover.sevecek.com/Autodiscover' `
  -WindowsAuthentication $true

Get-OABVirtualDirectory | Set-OABVirtualDirectory `
  -ExternalURL 'https://$rpcFQDN/OAB' `
  -WindowsAuthentication $true

Get-WebServicesVirtualDirectory | Set-WebServicesVirtualDirectory `
  -ExternalURL 'https://$rpcFQDN/EWS/Exchange.asmx' `
  -WindowsAuthentication $true

Enable-OutlookAnywhere `
  -ClientAuthenticationMethod NTLM `
  -ExternalHostname $rpcFQDN `
  -IISAuthenticationMethod NTLM `
  -SSLOffloading $false

Set-OutlookProvider `
  -Identity EXPR `
  -CertPrincipalName 'msstd:$certPrincipalName'

Samotný certifikát pro Exchange CAS server tento skript nenastavuje. Jaký si dáte certifikát na samotný CAS je jedno. Já tam dávám vnitřní, kterému věří TMG, takže nějaký ve stylu dcex.ad.gopas.local apod. Nebo si tam samozřejmě dejte ten veřejný, který jste si koupili. Ten musí být na TMG, ale vzadu na CAS je to jedno. Podstatné je jméno, které je v certifikátu, protože to budete muset později dát na TMG do Web Server Publishing pravidla na záložce To.

Místo příkazu Enable-OutlookAnywhere, pokud ho už povolený máte, můžete použít toto:

Get-OutlookAnywhere | Set-OutlookAnywhere `
  -ClientAuthenticationMethod NTLM `
  -ExternalHostname $rpcFQDN `
  -IISAuthenticationMethod NTLM `
  -SSLOffloading $false

A Exchange je připraven.

Příprava uživatelských účtů a Kerberos Constrained Delegation

Vaše Active Directory doména se nejspíš nejmenuje stejně, jako vaše veřejná emailová doména. Můžete mít například Active Directory pojmenovanou ad.gopas.cz, nebo gopas.local, zatímco emaily na adrese @gopas.cz. Je pohodlné potom změnit uživatelským účtům loginy tak, aby se lidi mohli přihlašovat rovnou svou emailovou adresou. Viz. obrázky:

V prvním obrázku se pomocí konzole Active Directory Domains and Trusts přidá Alternative UPN Suffix. V druhém obrázku vidíte, jak se to potom použije ve vlastnostech uživatelských účtů. Výsledek je na dalších dvou obrázcích - autodiscover potom nebude znovu otravovat se zadáváním loginu.

Jako další krok musíte povolit Kerberos Constrained Delegation (přesněji řečeno přímo Protocol Transition) pro účet vašeho TMG serveru tak, aby on mohl delegovat dozadu na Exchange CAS server. Na obrázku vidíte, že můj testovací TMG má účet TMG1 a zadní Exchange server je DCEX1. Upozorňuju, že musíte vybrat tu volbu Use any authentication protocol.

A teď ještě restartujte TMG. Ta delegace se bez restartu neprojeví.

Poznámky k nastavení na TMG

Na TMG musíte nejprve založit správný TLS/SSL Web Listener. Bude muset poslouchat na jiné internetové IP adrese, než máte Web Listener pro OWA, protože budete používat jinou autentizační metodu. Dejte tam správný certifikát a vyberte HTTP Authentication s Integrated volbou.

Na TMG dále použijete normálního publikačního průvodce pro Publish Exchange Web Client Access. Vyberete si tam Outlook Anywhere. Až to pravidlo budete mít hotové, vlezte do jeho vlastností a bez ohledu na to, co je už nastaveno na záložce Paths, tam dejte to co vidíte na následujícím obrázku:

A na záložce Authentication Delegation musíte vybrat Kerberos Constrained Delegation a dolů vložit správné SPN, které odpovídá jménu CAS serveru, které má jeho účet v Active Directory.

Na záložce To musíte mít především jméno CAS serveru, které je v jeho SSL certifikátu. Jak jsem říkal, já tam dávám vnitřní, takže se jméno shoduje. Ale pokud byste tam dali přímo ten stejný veřejný certifikát, jako máte na TMG, musíte tam také zadat jedno z jmen, které jsou v tom veřejném certifikátu. Tím pádem také budete muset nejspíš zadat ručně vnitřní IP adresu do druhé kolonky, jak je vidět na druhém obrázku.

Poslední obrázek je už jen pro pořádek, je tam jenom to veřejné jméno, které budou klienti zadávat do Outlooku, a které jste zadávali do Exchange pomocí toho PowerShell skriptu.

No a nakonec ještě udělejme pravidlo pro Autodiscover. Udělejte si prostě kopii tohoto předchozího pravidla a změňte jenom záložku Paths a Public Name tak, jak je na následujících dvou obrázcích. Zbytek se nemění.

Testování a ladění

Pokud chcete z venku tyto přístupy testovat, nemůžete jen tak použít Internet Explorer. On totiž chce ve výchozím stavu používat Negotiate ověřování a to, jak jsem již říkal, z venku nefunguje. Musíte tedy vypnout Negotiate pomocí jeho Internet Options, tabulky Advanced a volby Enable Integrated Windows Authentication. Musíte to vypnout. Tím přepnete IE aby používalo NTLM a potom můžete zkoušet.

  • Rpc adresář - vyzkoušíte tak, že si do prohlížeče zadáte adresu https://oa.gopas.cz/rpc/rpcproxy.dll. Musí to chtít ověřit a potom se sice zobrazí chyba. Ale můžete to ověřit na TMG v logu.
  • Oab adresář - vyzkoušíte tak, že se pokusíte stáhnout OAB.XML, které je v adresáři https://oa.gopas.cz/oab/{guid-guid-guid-guid}/oab.xml. To by mělo jít normálně stáhnout po zadání přihlašovacích údajů.
  • Ews adresář - vyzkoušíte tak, že dostanete popis XML webové služby v jazyku WSDL na adrese https://oa.gopas.cz/ews/Exchange.asmx.
  • Autodiscover - na to máte tady můj testovací skript, nebo můžete použít rovnou Outlook.

Všechny testy musí fungovat bez jakékoliv certifikátové chyby a musí to chtít ověřit uživatele - nebo (když to projde samo) to alespoň musí být vidět na TMG, že tyto přístupy byly ověřeny pod příslušným uživatelským účtem.

Jen pro pořádek ještě uvedu nastavení profilu v Outlooku. Mělo by se to nastavit samo pomocí služby Autodiscover, ale pro jistotu, kdyby něco nejelo:

A tak hurá na to! Když tohle rozjedete, Outlook se vás na nic ptát nebude a rovnou se připojí!

 

Comments

Re: OutlookAnywhere a TMG bez zadávání hesla

Nešlo by pro Outlook Anywhere použít veřejné jméno autodiscover.gopas.cz místo oa.gopas.cz? Ušetřím jeden certifikát (již mám veřejný certifikát pro autodiscover).
vadlejch on 14.3.2012 10:04

Re: OutlookAnywhere a TMG bez zadávání hesla

ano šlo, autodiscover dělá tři pokusy:
- zkusí se podívat, jestli existuje SRV záznam _autodiscover. Pokud existuje, připojí se na jméno serveru, které je uvedeno v tomto záznamu. V mém případě tedy oa.gopas.cz. Tohle uděláte, pokud chcete ušetřit jméno v certifikátu, abyste tam nemusel dávat jméno autodiscover.gopas.cz
- pokud SRV metoda neprojde (protože ten záznam neexistuje), tak si outlook požádá o A, nebo CNAME záznam autodiscover.gopas.cz a zkusí se připojit na toto jméno.
- pokud neprojde ani jméno autodiscover.gopas.cz, Outlook zkusí ještě to stejné vůči jménu gopas.cz, pokud takový A záznam existuje

Takže pokud do SRV záznamu napíšete jako cílový server autodiscover.gopas.cz, nebo ten SRV záznam neuděláte vůbec, tak to bude používat cílovou adresu autodiscover.gopas.cz a budete potřebovat právě certifikát s nápisem autodiscover.gopas.cz.

Autodiscover má ještě jednu speciální fíčuru, která není u jiných HTTPS prohlížečů obvyklá. Když se použije CNAME záznam, tak autodiscover kontroluje v certifikátu buď přímo to jméno, nebo dokonce i to, na které to CNAME vede. Takže pokud bych měl třeba záznam:

autodiscover.gopas.cz  CNAME ext-autodisco.gopas.cz

tak potom mi stačí mít v certifikátu buď jméno autodiscover.gopas.cz, nebo ext-autodisco.gopas.cz

ondas on 14.3.2012 10:54

Re: OutlookAnywhere a TMG bez zadávání hesla

Jaké jsou podmínky pro zprovoznění Outlook Anywhere (NTLM) v prostředí s více doménami v rámci jednoho lesa ? děkuji
MS on 4.11.2012 21:06

Re: OutlookAnywhere a TMG bez zadávání hesla

Jaké jsou podmínky pro zprovoznění Outlook Anywhere (NTLM) v prostředí s více doménami v rámci jednoho lesa ? děkuji
MS on 4.11.2012 21:25

Re: OutlookAnywhere a TMG bez zadávání hesla

podle tohohle:
http://technet.microsoft.com/en-us/library/cc995228.aspx

se říká přesně, že TMG i publikovaný server (nebo řekněme lépe jeho servisní účet) musí být ve stejné doméně. To sedí. Kerberos constrained delegation with protocol transition nelze dělat do jiné domény, než ve které je ten prostřední účet.

Takže uživatelé mohou být z domény libovolné, ale TMG a cílový server musí být v doméně jediné.
ondass on 13.11.2012 12:37

TMG Listener a neco na vic

Zdravim,

1) podle vseho by mel fungovat listener s authentikaci FORM i na OA (form pozna ze klien je Outlook a podstrci mu sam spravnou HTTP authenikaci) takto to aspoň funguje bez pouziti Kerberos... (a s nutnosti zadavat hesla) nefungovalo by to i s Kerberos?

z jiného soudku:
2) proc nefunguje ukladani hesla v Outlooku pro nedomenove uzivatele? jde to nejak napravit? (mame velmy komickou situaci kde klientum na ISA2006 heslo jde a na TMG nejde, je dotazovano pokazde)
Lukas on 2.9.2013 21:41

Re: OutlookAnywhere a TMG bez zadávání hesla

a) ano, samozřejmě, pokud tam dáte Forms autentizaci, tak ta má tzv. „basic fallback“, takže pokud se klient netváří jako normální prohlížeč (a outlook se tak netváří), nabídne mu rovnou Basic ověření a nesnaží se mu cpát formulář – to je jedna z výhod TMG oproti jiným reverzním HTTPS proxy. Nedávno jsme řešili něco například s jakýmsi IBM zařízením. Jenže Basic možná nechcete. Pokud byste ho chtěl, tak tenhle článek je zbytečně složitý. Při Basic ověření není SSO. Ale zase je to strašně jednoduše rozjetelné.

b) Pokud vyskakuje okno, tak to nejsem schopen říct jistě, ale následují nějaké možnosti:

  a. je samozřejmě možné, že pokud to uděláte tak jak mám popsáno, tak to nebude fungovat pro workgroup počítače, těžko říct

  b. jestli to okno jenom vyskočí a když ho potvrdíte, tak to normálně funguje, tak to bude tím, že se Outlooku prostě nelíbí tahle „nebezpečnost“ a prostě vám chce z dobré vůle dát vědět, že se bude někam do „neznámého“ serveru odesílat vaše „heslo“ (tedy hash). Mohl byste ověřit, že ta sajta je v Internet Exploreru v zóně Local Intranet a nikoliv Trusted Sites. Tohle někdy pomůže, ne vždycky, ale někdy jo. Trusted Sites totiž není až tak „trusted“ jako je Local Intranet.
  
  c. ještě to taky občas vyskakuje kvůli špatně nastavenému Autodiscover, nebo EWS (free-busy-schedule). V obou případech to vyskakuje, protože to nefunguje, ale když to jakkoliv odkliknete, tak to přestane otravovat, protože tu funkci třeba moc nepotřebujete. Jestli vám nejede EWS (Exchange Web Services) zjistíte nejjednodušeji tak, že se pokusíte naplánovat schůzku s nějakým člověkem, kterému NEvidíte do kalendáře – pokud vám to ukáže alespoň šedé oblasti jeho rozvrhu, kdy je zaneprázdněn, tak vám jede EWS a free-busy-schedule, pokud to neukáže nic, tak víte, že vám EWS nejede. Autodiscover můžete vyzkoušet tak, že si dáte ve vlastnostech Outlook profilu čudlík Opravit.
rozhodně si ověřte na Exchange, že máte všechny cesty v pořádku – viz můj poslední článeček na toto téma: http://www.sevecek.com/Lists/Posts/Post.aspx?ID=330
ondass on 4.9.2013 0:12

Add Comment

Sorry comments are disable due to the constant load of spam *


Omlouvám se, ale příval spamu nelze kontrolovat, takže mi prosím pošlete email, pokud máte nějaký dotaz, nebo připomínku.

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments