Lors de plusieurs interventions chez différents clients, le besoin suivant m’a été exprimé :

Peut-on faire apparaître le nom d’utilisateur (AD) sur le portail RD Web Access ?

Tout d’abord, il faut savoir que par défaut, tout utilisateur authentifié sur le Portail RD Web (Remote Desktop Web Access) ne voit pas apparaître son nom d’utilisateur sur celui-ci, voir l’image ci-après :

1

Le coin supérieur droit de cette page (fichier Default.aspx) regroupe uniquement les deux boutons : Aide & Se déconnecter

Nous allons voir à travers cet article comment personnaliser le Portail RDWeb pour afficher le nom d’utilisateur connecté à côté du bouton « Se déconnecter ».

Par défaut, l’ensemble des fichiers correspondant au Portail RDWA sont stockés dans C:\windows\web\RDWeb\Pages

Donc commencez par faire une copie de ce dossier avant de suivre les instructions détaillées ci-après.

Le but étant d’avoir un moyen de rétablir le portail RDWA en cas de mauvaise manipulation /erreur de configuration.

Comment ça marche ?

  1. Editez le fichier C:\windows\web\RDWeb\Pages\Web.config
  2. Localisez la ligne 52 : <system.web>
  3. Copiez /collez le code suivant (en dessous de la ligne 52) :
    <compilation defaultLanguage="c#" debug="true">
      <assemblies>
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </assemblies>
    </compilation>
  4. Le résultat doit ressembler à celui illustré dans l’image suivante:2
  5. Ce code a pour but d’indiquer au serveur RDWA que nous avons besoin d’insérer un code spécifique, et plus précisément un code (.NET) depuis la DLL « System.DirectoryServices.dll »
  6. Dès que le code est inséré, enregistrez et fermez le fichier Web.config
  7. Maintenant, éditez le fichier C:\windows\web\RDWeb\Pages\fr-FR\Default.aspx
  8. Localisez la ligne 225 : </script>
  9. Copiez /collez le code suivant (avant la ligne 225) :
    private static string GetDisplayName(string strUserName)
    {
      string strLDAPPath = "LDAP://dc=vLAB,dc=Lan";
      string strFilter = string.Empty;
      
      if(strUserName.Contains("\\")){strUserName = strUserName.Substring(1 + strUserName.IndexOf("\\"));}
      strFilter = "(SAMAccountName=" + strUserName + ")";
      if(strUserName.Contains("@")){strFilter = "(UserPrincipalName=" + strUserName + ")";}
      
      System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(strLDAPPath);
      System.DirectoryServices.DirectorySearcher ds = new System.DirectoryServices.DirectorySearcher(de);
      ds.Filter = strFilter;
      ds.PropertiesToLoad.Add("DisplayName"); 
      System.DirectoryServices.SearchResultCollection results = ds.FindAll();
      
      return (results != null && results.Count > 0) ? Uri.EscapeDataString(results[0].Properties["DisplayName"][0].ToString()) : string.Empty;
    }
  10. Remplacer la valeur de LDAP://dc=vLAB,dc=Lan par le nom DNS de votre domaine AD
  11. Le résultat doit ressembler à celui illustré dans l’image suivante : 3
  12. Le code inséré occupe les lignes 224 > 240 sur mon fichier Default.aspx
  13. Localisez ensuite la ligne 248 : baseurl= »<%=SecurityElement.Escape(baseUrl.AbsoluteUri)%> »
  14. Insérez la ligne de code ci-après après la ligne 248 ‘baseurl…. » :
    userdisplayname="<%=GetDisplayName(strDomainUserName)%>"
  15. Le résultat doit ressembler à celui illustré dans l’image suivante : 4
  16. Les étapes ci-dessus permettent d’afficher le nom d’utilisateur sur la page Default.aspx uniquement. Pour faire la même chose sur les autres pages du Portail RDWA, le fichier Site.xsl doit également être modifié, pour ce faire éditez ce dernier qui se trouve dans C:\windows\web\RDWeb\Pages\Site.xsl 
  17. Localisez la ligne 15 (ligne vide) et insérez le code suivant juste en dessous :
    <xsl:variable name="userdisplayname" select="/RDWAPage/@userdisplayname"/>
  18. Enfin, localisez la ligne 322 (ou 323 selon la configuration du déploiement RDS 2012 /2012R2) : <xsl:value-of select= »$strings[@id = ‘SignOut’] »/>
  19. Copiez /collez le code suivant juste après cette ligne :
    <xsl:if test="$userdisplayname">(
    document.write(decodeURIComponent(''));)</xsl:if>
  20. Le résultat final doit ressembler à celui illustré dans l’image suivante :

5

Enregistrez et fermez le fichier Site.xsl et connectez-vous sur le Portail RDWA.

Enfin, constatez l’apparition du nom complet de l’utilisateur authentifié (Hicham KADIRI dans l’exemple suivant) :

6

J’espère que cette technique pourra vous être utile.

C’est une technique pour les [RDS Advanced users only].

Toute mauvaise manip sur les fichiers Web.config /Default.aspx /Site.xsl peut entraîner un downtime du portail RDWA

Vérifiez que vous avez bien copié /sauvegardé le dossier C:\Windows\Web\RDWeb\Pages avant d’appliquer cette procédure sur vos serveurs RDWA de prod :).

Goodluck et à bientôt.

Publicités
commentaires
  1. Xav dit :

    Bonjour et merci pour ce poste.
    Toutefois, je suis à la lettre vos instruction et j’obtiens l’erreur suivante :

    Erreur du serveur dans l’application ‘/RDWeb/Pages’.

    Erreur de compilation
    Description : Une erreur s’est produite lors de la compilation d’une ressource requise pour répondre à cette demande. Veuillez consulter ci-dessous les détails relatifs à l’erreur en question, puis modifier votre code source de manière appropriée.

    Message d’erreur du compilateur: CS0103: Le nom ‘CultureInfo’ n’existe pas dans le contexte actuel

    Erreur source:

    Ligne 158 :
    Ligne 159 : try {
    Ligne 160 : bRTL = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft;
    Ligne 161 : }
    Ligne 162 : catch( NullReferenceException ) {

    Fichier source: c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx Ligne: 160

    Afficher les résultats détaillés de la compilation:

    c:\windows\system32\inetsrv> « C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe » /t:library /utf8output /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.Activities.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Web\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.IdentityModel\v4.0_4.0.0.0__b77a5c561934e089\System.IdentityModel.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_64\TSPortalWebPart\v4.0_6.3.0.0__31bf3856ad364e35\TSPortalWebPart.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Extensions\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Extensions.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.WorkflowServices\v4.0_4.0.0.0__31bf3856ad364e35\System.WorkflowServices.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll » /R: »C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Services\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.ApplicationServices\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.ApplicationServices.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.DynamicData\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.DynamicData.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_64\System.Web\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.dll » /R: »C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activation\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activation.dll » /out: »C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\rdweb_pages\decbd09c\9f1642a3\App_Web_1ucgi3hv.dll » /D:DEBUG /debug+ /optimize- /win32res: »C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\rdweb_pages\decbd09c\9f1642a3\1ucgi3hv.res » /w:4 /nowarn:1659;1699;1701;612;618 /warnaserror- « C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\rdweb_pages\decbd09c\9f1642a3\App_Web_1ucgi3hv.0.cs » « C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\rdweb_pages\decbd09c\9f1642a3\App_Web_1ucgi3hv.1.cs »

    Microsoft (R) Visual C# Compiler version 4.6.1087.0

    for C# 5
    Copyright (C) Microsoft Corporation. All rights reserved.

    This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240

    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(160,18): error CS0103: Le nom ‘CultureInfo’ n’existe pas dans le contexte actuel
    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(2,24): error CS1002: ; attendu
    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(2,38): error CS1002: ; attendu
    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(2,63): error CS1002: ; attendu
    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(3,1): error CS1525: Terme d’expression non valide ‘<'
    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(3,12): error CS1002: ; attendu
    c:\Windows\Web\RDWeb\Pages\fr-FR\Default.aspx(3,44): error CS1002: ; attendu

    N'étant pas développeur, j'éprouve des difficultés pour corriger.
    Je m'en remets à la communauté pour m'aider ou au moins m'orienter.
    Cordialement.

    • Hicham KADIRI dit :

      Salut Xav, avez-vous bien inséré le code à la ligne 52 ? selon le message d’erreur, je pense qu’il s’agit simplement d’un problème d’insération du code au bon endroit. j’espère que vous avez copié /sauvegardé le dossier C:\Windows\…\RDWeb pour le restaurer à son emplacement d’origine pour pouvoir rétablir le portail. réessayez en suivant les instructions step by step et confirmez moi le résultat.

  2. Joshua dit :

    Bonjour,

    Merci tout d’abord pour ce tutoriel bien pratique !

    En appliquant scrupuleusement vos consignes, je rentre l’anomalie suivante : au lieu d’afficher « Se déconnecter (nom d’utilisateur) », la page web me renvoie « Se déconnecter (document.write(decodeURIComponent( »));) »

    S’auriez-vous d’où cela peut-il provenir ?

    Vous en remerciant par avance.

    Excellente journée.

    • Hicham KADIRI dit :

      Bonjour Joshua,
      Relisez l’article (step by step).
      Le code affiché à coté de « Se déconnecter » correspond à un bloc de texte (code) du fichier de config ayant été modifié de manière incorrecte.
      Si vous suivez l’article étape par étape, vous devez avoir le même résultat que moi.
      Sinon, pouvez-vous me confirmer la version de vos serveurs RDS (2012 /2012 R2 /2016 ?).
      ++
      H.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s