Translate

lundi 12 octobre 2009

TUTORIEL: Exchange 2010 - Intégration OCS dans OWA

Depuis la RC1, je me suis mis un peu plus à Exchange 2010 et ses nouvelles fonctionnalités, sauf une: l'intégration E2010/OCS 2007R2. En effet, tant qu'E2010 n'était pas RTM, nos chers IT admins à Seattle ne voulaient pas nous donner les composants d'intégration, alors je me suis dit "wait'n'see"...

Nous allons donc voir comment intégrer l'Outlook Web App d'Exchange 2010 avec OCS 2007 R2. Et comme Microsoft fait bien les choses, c'est très simple! :)

Pré-requis

Vous devez d'abord avoir:
  • Un rôle de serveur d'accès client (CAS: Client Access Server) pleinement fonctionnel et disposant d'un certificat WebServer ou équivalent, et dont le sujet (attribut Subject Name) est un nom d'hôte valide - Il ne s'agit pas nécessairement du certificat utilisé par OWA. Ce qui importe, c'est de bien noter le nom complet qualifié dans cet attribut, car c'est avec ce nom que le serveur Exchange se présentera au serveur OCS.
  • Vous devez avoir au moins un pool OCS 2007 R2 déployé et lui-même parfaîtement fonctionnel (NDLR: l'intégration n'est pas supportée avec OCS 2007).
  • Cela peut paraîtré évident, mais le(s) compte(s) utilisé(s) pour se connecter doit être activé pour Exchange et OCS. Assurez-vous que vous pouvez vous connecter avec Communicator 2007/R2 avec vos comptes de test.
Installation des binaires

Le composant est livré sous la forme d'un MSI, qui contient les binaires suivants:
Tout cela est très famillier n'est-ce pas :) - Oui, à l'exception du dernier, les binaires à installer correspondent aux binaires d'OCS 2007 R2. Après installation, une mise à jour UCMA 2.0 sera nécessaire (j'ai un build 3.5.6907.45 qui n'est pas encore disponible, j'essayerai avec le build 37 tout de même par curiosité).

MAJ: Je confirme que l'UCMA 2.0 build 45 est un minimum requis pour que le chat fonctionne entre un client OWA et un client MOC, sinon seule la présence est fonctionnelle.

Tous ces composants doivent être installés dans l'ordre ci-dessus, sur chaque serveur ayant le rôle Client Access, et sur lesquels la fonctionnalité devra être activée. Bien évidemment, il est nécessaire de déployer le composant sur chaque serveur d'une même ferme. Je passe ici leur installation: sur Windows 2008 R2, le Framework 3.5.1 est déjà installé puisque c'est un pré-requis Exchange 2010.

Configuration du composant

Une fois tout ce petit monde installé, il suffit d'aller modifier le fichier Web.Config de l'application OWA. Pour cela, ouvrez un Exchange Management Shell, et tapez ceci:
notepad "$exinstall\ClientAccess\OWA\Web.Config"
Et cherchez la balise XML nommée: "IMPoolName". Il y a trois valeurs à spécifier:
  1. IMPoolName: le nom complet qualifié (FQDN) du Pool sur lequel se connecter - Personnellement j'utilise un Pool Director afin de rediriger la connection auprès du Home Pool légitime auquel appartient l'utilisateur. C'est presque essentiel dans un environnement à Pools multiples et simplifie énormément la configuration;
  2. IMCertificateIssuer: le nom distingué (Distinguished Name) de l'autorité de certification ayant émis le certificat à utiliser pour la connection MTLS sortante;
  3. IMCertificateSerialNumber: le numéro de série du certificat à utiliser.
Attention: les valeurs IMCertificateIssuer et IMCertificateSerialNumber sont très capricieuses!
  • IMCertificateIssuer doit correspondre exactement à la valeur de la propriété "Issuer" du certificat;
  • IMCertificateSerialNumber doit être au format "XX XX XX ... XX XX" c'est à dire, avec un espace entre chaque octet du noméro de série.
Vous avez deux techniques pour récupérer les bonnes valeurs:
  1. Les copier à partir d'une MMC "Certificates" qu'il vous faudra créér à la main au préalable (se référer à mes posts précédents);
  2. Utiliser la cmdlet Get-ExchangeCertificate -- Bien sûr c'est ma méthode préférée =°)
Voici une capture:


N'oubliez pas de répéter l'opération sur tous les CAS sur lesquel activer l'intégration...

Configuration d'OCS 2007 R2

Maintenant qu'Exchange est configuré, passons à OCS 2007 R2. Encore une fois c'est très simple, et dans l'absolu, complètement automatisable via le WMI.

Il suffit d'ajouter le nom complet qualifié du certificat configuré dans le Web.Config d'OWA, car je le rappelle, c'est avec ce nom que le serveur Exchange se présentera.

Note: le serveur OCS 2007 R2 doit faire confiance au certificat utilisé par le serveur Exchange, et vice-versa. Il est recommandé d'utiliser des certificats émis par la même autorité de certification, ou du moins, par une autorité de certification faisant partie de la même chaîne de certification (la racine étant bien évidemment une racine de confiance). Dans l'absolu, il serait techniquement possible d'utiliser le certificat auto-signé du serveur Exchange, mais cela ne serait pas viable dans la durée, et probablement non supporté par Microsoft.
Pour configurer l'autorisation, effectuez les manoeuvres suivantes:
  1. Ouvrez la MMC OCS 2007 R2;
  2. Selectionnez le Pool référencé dans le fichier Web.Config, effectuez un clic-droit puis selectionnez Properties ==> Front-End Properties;
  3. Dans l'onglet "Authorized Hosts", ajoutez une entrée correspondante au nom complet qualifié du certificat du serveur CAS Exchange, et assurez vous que "Treat as Authenticated" et "Throttle as Server" sont cochées;
  4. Validez et fermez la MMC OCS 2007 R2.
Il est normalement inutile de redémarrer les services "Front-End" du(des) serveur(s) du Pool, attendez simplement quelques minutes que la configuration soit appliquée (5 minutes max après une réplication AD).


Activation de la fonctionnalité

La fonctionnalité s'active ou se désactive de deux manières:

  1. Activation par application Web OWA
  2. Activation par segmentation dans une stratégie OWA (OwaPolicy)
Il va de soit que l'activation sur le serveur doit être faite avant, la stratégie OWA par défaut autorisant l'intégration IM dans OWA.

L'activation se fait par la commande Set-OWAVirtualDirectory avec les arguments "InstantMessagingType" et "InstantMessagingEnabled"

  • InstantMessagingType peut être "None", "OCS" ou "MSN";
  • InstantMessagingEnabled est un Booléen ($true ou $false).
La commande sera donc simplement celle-ci:

Set-OwaVirtualDirectory SERVEUR\WebApp -InstantMessagingType OCS -InstantMessagingEnabled $true


Une fois la WebApp configurée, il est nécessaire de la recycler (par la console IIS) ou plus simplement de redémarrer les services IIS sur le serveur CAS, à l'aide un désormais classique "iisreset /noforce" (si votre lab peine un peu, faites un iireset /stop puis un iisreset /start).

Testez l'intégration

Observez les eventlogs "Application" sur votre CAS ==> assurez vous qu'il n'y a aucune erreur de configuration, que l'application trouve bien la DLL d'intégration, etc etc... en cas de pépin, vous le verrez tout de suite.

Utilisez deux clients, ou connectez vous depuis un serveur quelconque à OWA, avec deux comptes, bien évidemment. Vous pouvez aussi utiliser deux navigateurs depuis le même poste... =°)

La première connection est toujours un peu longue, surtout dans un lab où la mémoire fait défaut. Après quelques secondes, vous retrouverez vos contacts, votre indicateur de présence ainsi que celui des autres utilisateurs. C'est simple mais tellement efficace :)

Voici une petite capture:


Et une autre avec un client MOC:


Voilà, Exchange 2010 sera disponible dans une dizaine de jours, j'aurais aimé pouvoir allez au TechEd, mais comme l'on dit chez nous "Business FIRST !!!" -- en effet, nous allons délivrer un projet Exchange 2010 chez un gros client et je ne tiens pas à rater ça! ;)

9 commentaires:

  1. Bonjour,

    Merci pour ce post très intéréssant.

    Où peut on récupérer le composant et plus particulièrement Unified Communications Managed API 2.0 en build 45 et CWAOWASPP.msi ?

    Merci pour votre retour,
    Cdlt,
    Bastien BERTOUT.

    RépondreSupprimer
  2. J'ai suivi ce tuto, j'ai réussi a activer ocs dans OWA, mais je peux ecrire un message depuis un client Communicator vers un quelqun connecté sur OWA, mais pas l'inverse, savez vous à quoi c'est du?

    RépondreSupprimer
  3. Bonsoir,

    Bastien ==> ce composant n'est pas encore officiellement disponible - ma version est une RC (Release Candidate)

    JarodSC ==> Assure-toi d'avoir bien installé le CU3 d'OCS 2007 R2 sur tous tes serveurs OCS et sur ton CAS Exchange 2010 (màj de l'UCMA API et OCS Core).

    RépondreSupprimer
  4. C'est un serveur OCS 2007 non R2

    Pour les 2 serveurs ( exchange et ocs) il n'y a pas de mise a jour sur windows update

    RépondreSupprimer
  5. Ceci explique cela ! L'intégration E2010 OWA et OCS 2007 n'est pas supportée, il faut OCS 2007 R2 au minimum... :p

    RépondreSupprimer
  6. Bastien,

    J'ai été un peu rapide, le composant OWA pour l'intégration est bel et bien disponible ici:
    http://www.microsoft.com/downloads/details.aspx?familyid=CA107AB1-63C8-4C6A-816D-17961393D2B8&displaylang=en

    Pour l'UCMA API d'OCS 2007 R2, une version plus récente a été adointe au Cumulative Update 3 d'OCS 2007 R2:
    http://support.microsoft.com/kb/968802

    RépondreSupprimer
  7. Bonjour,

    hormis les journaux d'evenements, y a t-il d'autres logs ? La partie OCS est apparue dans mon OWA mais le lien avec OCS 2007 R2 ne semble pas fonctionner. Je n'ai pas d'erreur dans l'eventviewer.

    Vincent RIVOIRE

    RépondreSupprimer
  8. Bonjour Vincent,

    Il est possible qu'il s'agisse d'un problème ce certificat. Assure-toi que le certificat configuré dans le fichier Web.Config corresponde bien à celui que tu souhaites utiliser. Il doit correspondreau nom du serveur (ou FQDN) que tu définis ensuite dans les "Trusted Hosts" de ton Pool (ou Pool Directeur).

    Il faut aussi t'assurer que tu n'utilises pas un certificat auto-signé (c'est pas terrible), et que bien sûr l'autorité de certification qui a émis ton certificate Exchange soit considérée de confiance par tes serveurs OCS, et vice-versa.

    Bon courage =°)

    RépondreSupprimer
  9. Bonjour Benoit,

    la solution a mon problème était assez simple (comme souvent), il s'agissait de la valeur à attribuer à IMPoolName. J'avais mis le nom court du pool au lieu du FQDN ;-)

    Merci pour ton aide.

    RépondreSupprimer