Problemas con la información de disponibilidad entre Office 365 y Exchange Onpremise en OWA
Hola a tod@s!
Simplemente comentaros un caso peculiar que hemos tenido recientemente. En entornos híbridos o en los que existe una federación de Exchange entre una organización de On-Premise y una organización ubicada en Office 365 hemos visto problemas de acceso a la información de disponibilidad. En concreto, usuarios con buzón en Office 365 consultando la disponibilidad de usuarios con buzón en un servidor On-Premise utilizando OWA (Outlook no presentaba problemas).
Revisando la comunicación en la parte On-Premise localizamos una respuesta con un error 500 en el Firewall a través del cuál se publica la URL de EWS. Siguiendo la pista de dicho error vimos que el error venía desde los servidores CAS en los logs de IIS del mismo:
2013-10-19 15:27:16 1.1.1.1 POST /ews/exchange.asmx/WSSecurity - 443 - 2.2.2.2 ASProxy/CrossForest/Directory/https/15.00.0820.005 - - mail.midominioonpremise.com 500 0 0 1258 12358 265
Al localizar estos errores nos centramos en problemas con el servicio de disponibilidad (AS - Availability Service) pero no llegamos a localizar estas peticiones y respuestas al revisar dicho servicio. Sabiendo que era el propio CAS el que devolvía el error pero que el proceso que atendía la petición no la estaba revisando empezamos a valorar capas intermedias: IIS y EWS.
Habilitamos el logging de peticiones erróneas o fallidas de IIS:
Enable Trace Logging for Failed Requests (IIS 7)
https://technet.microsoft.com/en-us/library/cc725786(v=ws.10).aspx
En este log finalmente conseguimos obtener más información. La petición original que venía de Office 365 era similar a la siguiente:
Buffer="<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:exm="https://schemas.microsoft.com/exchange/services/2006/messages" xmlns:ext="https://schemas.microsoft.com/exchange/services/2006/types" xmlns:a="https://www.w3.org/2005/08/addressing" xmlns:o="https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ds="https://www.w3.org/2000/09/xmldsig#" xmlns:de="https://www.w3.org/2001/04/xmlenc#" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema"><soap:Header><ext:RequestServerVersion Version="Exchange2012" /><ext:TimeZoneContext><ext:TimeZoneDefinition Name="(UTC-05:00) Eastern Time (US & Canada)" Id="Eastern Standard Time"><ext:Periods><ext:Period Bias="PT5H" Name="Standard" Id="trule:Microsoft/Registry/Eastern Standard Time/2006-Standard" /><ext:Period Bias="PT4H" Name="Daylight" Id="trule:Microsoft/Registry/Eastern Standard Time/2006-Daylight" /><ext:Period Bias="PT5H" Name="
Y también figura la respuesta con el error:
Buffer="<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/" xmlns:a="https://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">*</a:Action><a:RelatesTo>urn:uuid:f3015c43-e888-4415-9288-23dc8cb58259</a:RelatesTo></s:Header><s:Body><s:Fault><faultcode xmlns:a="https://schemas.microsoft.com/exchange/services/2006/types">a:ErrorInvalidServerVersion</faultcode><faultstring xml:lang="en-US">The specified server version is invalid.</faultstring><detail><e:ResponseCode xmlns:e="https://schemas.microsoft.com/exchange/services/2006/errors">ErrorInvalidServerVersion</e:ResponseCode><e:Message xmlns:e="https://schemas.microsoft.com/exchange/services/2006/errors">The specified server version is invalid.</e:Message></detail></s:Fault></s:Body></s:Envelope>"
Como se observa en el error el problema viene derivado de que se envía la "major version" de Exchange en la petición. Esto ocurre únicamente cuando a nivel de la relación de organización en Office 365 hemos fijado el valor del atributo TargetSharingEpr, en el que se especifica la URL de EWS del entorno On-Premise:
RunspaceId : 3dd8g9l3-4a85-441b-a085-4r7t53825475
DomainNames : {midominioonpremise.com}
FreeBusyAccessEnabled : True
FreeBusyAccessLevel : AvailabilityOnly
FreeBusyAccessScope :
MailboxMoveEnabled : True
DeliveryReportEnabled : True
MailTipsAccessEnabled : True
MailTipsAccessLevel : All
MailTipsAccessScope :
PhotosEnabled : False
TargetApplicationUri : FYDIBOHF25SPDLT.midominioonpremise.com
TargetSharingEpr : https://mail.midominioonpremise.com/ews/exchange.asmx
TargetOwaURL :
TargetAutodiscoverEpr :
OrganizationContact :
Enabled : True
ArchiveAccessEnabled : True
AdminDisplayName :
ExchangeVersion : 0.10 (14.0.100.0)
Name : midominioonpremise
DistinguishedName : CN=midominioonpremise,CN=Federation,CN=Configuration,CN=miorganizacion365.onmicrosoft.com,CN=ConfigurationUnits,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=namprd05,DC=prod,DC=outlook,DC=com
Identity : midominioonpremise
Guid : 609cf6f9-0abb-4152-8c60-01090e6ccf94
ObjectCategory : namprd05.prod.outlook.com/Configuration/Schema/ms-Exch-Fed-Sharing-Relationship
ObjectClass : {top, msExchFedSharingRelationship}
WhenChanged : 10/05/2013 8:49:13 AM
WhenCreated : 10/04/2013 3:30:20 PM
WhenChangedUTC : 10/05/2013 12:49:13 PM
WhenCreatedUTC : 10/04/2013 7:30:20 PM
OrganizationId : namprd05.prod.outlook.com/Microsoft Exchange Hosted Organizations/miorganizacion365.onmicrosoft.com - namprd05.prod.outlook.com/Configuration/Services/Microsoft Exchange/ConfigurationUnits/miorganizacion365.onmicrosoft.com/Configuration
OriginatingServer : BLUPR05DC011.namprd05.prod.outlook.com
IsValid : True
ObjectState : Unchanged
Exchange Online no verificará la versión del servidor de destino y enviará la petición directamente incluyendo la "major version". Para corregir el problema basta con eliminar la información de TargetSharingEpr de forma que obtengamos dicha URL a través de Autodiscover. Para eliminarlo podemos ejecutar el siguiente comando:
Set-OrganizationRelationship -Identity midominioonpremise –TargetSharingEpr $null
Tras este cambio no deberíamos tener más problemas en OWA.
Saludos,
Pablo