Gael's profileGael Duhamel - SharePoin...PhotosBlogListsMore Tools Help

Blog


    March 22

    [SharePoint] Mettre en place une authentification Windows Live Id sur son site SharePoint

    Je vais à travers cet article vous montrer comment implémenter l'authentification formulaire (communément appelé fba pour ) via les services Widows Live. Un prochain viendra rapidement sur la mise en place d'une liste SharePoint comme fournisseur d'accès (qui est d'ailleurs extrement proche de ce qui se fait dans le cas de Windows Live).

    Pour mettre en place cette authentification, je vais utiliser la capacité de SharePoint à fournir pour un même contenu plusieurs authentifications possibles (Alternate Access Mapping):

    • Internet : http://live.spgael.sharepoint.local pour l’authentification via Windows Live
    • Intranet : http://spgael.sharepoint.local pour l’authentification via Windows qui est la base de l’application SharePoint et donc celle définit par défaut.

    Pour en savoir plus sur la configuration, reportez vous a la fin de l'article

    Windows Live Authentication Membership Provider

    Ce membership provider est disponible sur CodePlex :

    Ajout et déploiement de la solution

    Première étape, ajoutez votre solution ! Pour cela, nous allons utiliser la ligne de commande avec l’option . Ouvrez donc une fenêtre shell et tapez :

    c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin\stsadm.exe -o addsolution -filename c:\FBA\Live\CKS.MembershipProvider.WindowsLiveAuthentication.wsp

    clip_image010

    Une fois la solution correctement ajoutée, il nous faut maintenant la déployer. Pour cela, deux solutions, via :

    c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin\stsadm.exe -o deploysolution -name CKS.MembershipProvider.WindowsLiveAuthentication.wsp -immediate -allowgacdeployment

    clip_image012

    c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin\stsadm.exe -o execadmsvcjobs

    clip_image014

    • L’interface web de l’administration centrale de SharePoint :

    clip_image016

    clip_image018 Cliquez sur la solution
    clip_image020 Cliquez sur « Deploy Solution »
    clip_image022 Ici, vous pouvez choisir le moment pour déployer votre solution et ensuite cliquez sur le bouton « OK »
    clip_image024 Vérifiez que votre solution a bien été déployée

    Pour ma part, je préfère utiliser l’interface SharePoint car je peux savoir de suite si ma solution a été correctement déployée.

    Enregistrer votre application Windows Live ID

    Il vous faut maintenant enregistrer votre application auprès de live.com. Vous devez faire cela afin de récupérer un ApplicationID ainsi que Clé secrète qui vous permettra d’identifier et authentifier vos utilisateurs auprès de Live.com.

    Rendez-vous donc sur https://msm.live.com/app/default.aspx et cliquez sur Register an application.

    clip_image026

    clip_image028

    Remplissez les champs :

    Attention : Return URL doit se terminer par /_layouts/liveauth-handler.aspx

    Sur l’écran suivant, notez bien votre ApplicationID, car nous en aurons besoin pour configurer notre provider.

    Configurer votre provider

    Pour commencer, nous allons spécifier à notre application web d’utiliser l’authentification via Windows Live ID. Pour cela ouvrez l’administration centrale de SharePoint dans l’onglet « Application Management » et cliquez sur « Authentication Providers ».

    clip_image030

    clip_image032 Sélectionnez la zone (cf. Alternate access mapping) à modifier et n’oubliez pas de vous assurer que l’application web sélectionnée est bien la bonne.
    clip_image034 Dans la section type d’authentification, sélectionnez « Formulaire »
    clip_image036 Dans la partie « Nom du membership provider » et « Nom du rôle manager », entrez ce que vous souhaitez, ces valeurs seront à reporter plus tard dans notre web.config.

    Notre application web SharePoint est donc configurée pour utiliser l’authentification via Windows Live ID, il nous reste plus qu’à configurer correctement les applications web pour qu’elles reconnaissent notre nouveau provider.

    Pour cela, nous allons utiliser la ligne de commande qui a été addwindowsliveauth.

    Ouvrez donc un shell et tapez :

    c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin\stsadm.exe -o addwindowsliveauth -appid <application id> -appkey <application secret key> -appmode <http/https> -profsite <URL du site qui contient la liste des profiles> -proflist <nom de la liste des profiles utilisateurs> -locked <URL pour rediriger les utilisateurs bloqués> -url <URL de l’application web> -member <Nom du membership> -role <Nom du role>

    clip_image038

    Pour éclaircir un peu les paramètres car ce n’est pas vraiment explicite et bien documenté :

    • appid : Il s’agit de l’application id fournis par Live.com lors de votre enregistrement
    • appkey : Il s’agit de la secret key que vous avez fournis lors de votre enregistrement
    • appmode : Option http ou https. Cela depend si votre site web tourne ou non en https
    • profsite : Url du site hébergeant la liste des utilisateurs ayant accès à votre site (à bien évidement mettre dans une partie sécurisée smile_nerd)
    • proflist : Nom de la liste contenant les utilisateurs ayant accès à votre site. Lors de la première utilisation, la liste sera automatiquement créée.
    • locked : URL ayant un accès anonyme vers laquelle les utilisateurs non enregistrés seront redirigés (prenez par exemple la page AccessDenied.aspx).
    • url : Application web à modifier. En fait, la commande stsadm vient ajouter les lignes nécessaires à votre web.config
    • member : Nom du membership renseigné dans la configuration de votre provider
    • role : Nom du role manager renseigné dans la configuration de votre provider

      Attention : Il vous faut appliquer cette ligne de commande sur chaque site nécessitant un accès aux utilisateurs WindowsLiveID (Administration centrale de SharePoint comprise)

    Pour terminer, ouvrez le fichier web.config de votre application web configurée pour recevoir l’authentification Windows Live ID afin de modifier la page de login a ouvrir ainsi que configurer le paramètre membership et role manager par defaut :

    Avant :

    <authentication mode="Forms">
        <forms loginUrl="/_layouts/login.aspx" /> 
    </authentication> 
    ... 
    <membership> 
        <providers> 
            <add
                name="WindowsLiveMembership"
                type="CKS.WindowsLiveAuthentication.LiveMembershipProvider, CKS.WindowsLiveAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b5adbad25a892e4a" /> 
        </providers> 
    </membership> 
    <roleManager> 
        <providers> 
            <add
                name="WindowsLiveRoleManager"
                type="CKS.WindowsLiveAuthentication.LiveRoleProvider, CKS.WindowsLiveAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b5adbad25a892e4a" /> 
        </providers> 
    </roleManager>

    Après :

    <authentication mode="Forms">
        <forms loginUrl="/_layouts/liveauth-handler.aspx?action=login" />
    </authentication> 
    ... 
    <membership defaultProvider="WindowsLiveMembership"> 
        <providers> 
            <add
                name="WindowsLiveMembership"
                type="CKS.WindowsLiveAuthentication.LiveMembershipProvider, CKS.WindowsLiveAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b5adbad25a892e4a" /> 
        </providers> 
    </membership> 
    <roleManager
        defaultProvider="WindowsLiveRoleManager"
        enabled="true"
        cacheRolesInCookie="true"
        cookieName="liveroles"> 
        <providers> 
            <add
                name="WindowsLiveRoleManager" 
                type="CKS.WindowsLiveAuthentication.LiveRoleProvider, CKS.WindowsLiveAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b5adbad25a892e4a" /> 
        </providers> 
    </roleManager>

    Après avoir enregistrée les modifications, faite IISReset.

    Pour terminer la configuration, il ne nous reste plus qu’a activer la feature de synchronisation (utile si vous avez plusieurs sites fonctionnant avec l’authentification via Windows Live Id).

    clip_image040

    Se connecter et gérer les permissions

    Dans mon cas, j’ai 2 sites sur une même base SharePoint :

    • http://spgael.sharepoint.local : Intranet en authentification windows
    • http://live.spgael.sharepoint.local : Internet en authentification Windows Live ID, avec l’accès anonyme autorisé.

    A noter : J’ai modifié la sécurité des deux listes créées par notre provider pour qu’elle ne soit visible que par l’administrateur. En effet, je n’ai pas envie que les utilisateurs puissent visualiser l’ensemble des informations des membres.

     

    clip_image042

    Lorsque qu’un utilisateur arrive sur mon site internet, il a donc cette page
    clip_image044 Lorsque qu’il clique sur « Se connecter », l’utilisateur est directement envoyé sur l’interface live.com pour s’authentifier. Renseignez votre identifiant Live et cliquez sur le bouton « Sign In »
    clip_image046 Une fois votre authentification validée sur Live.com, vous êtes redirigé sur le portail et connecté. Une page vous invite à renseigner vos informations personnelles (le projet étant open source, il est extrêmement facile de modifier par la suite ce comportement ou les informations). Remplissez donc les informations et cliquez sur le bouton « OK ».
    clip_image048 Vous voila donc maintenant sur le site internet.
    clip_image050 Retour sur notre application intranet (qui est celle par défaut et que j’utilise pour piloter mon site internet), pour voir ce qu’il y a dans la liste des membres. On peut donc voir que je suis bien enregistré dans la liste des utilisateurs Windows Live du portail. Au passage, vous pouvez remarquer sur la gauche que j’ai 3 listes qui sont invisibles pour le moment en mode anonyme ou connecté sur le site internet).
    clip_image052 Nous allons maintenant ajouter l’utilisateur au groupe des visiteurs afin qu’il puisse accéder sur le site internet a la liste « Une Liste ». Pour cela, allez sur la page de gestion du groupe visiteur
    clip_image054 Vous pouvez maintenant accéder à la liste « Une Liste »

    A noter : Sur les screenshots, j’ai volontairement barré d’un gros et moche trait noir le Passport Unique Id (PUID) de mon compte live.

    Suggestion d'amélioriation par rapport au projet codeplex publié

    Comme expliqué un peu plus haut, j’ai masqué mon PUID. Pour corriger cela, il vous suffit d’éditer :

    • le code du blog user profile (BlogUserProfile.cs) comme ci :
      • Ligne 29 : Remplacer l’accesseur lecture par ceci
    public string DisplayName 
    { 
        get 
        { 
            if (String.IsNullOrEmpty(strDisplayName)) 
                return strId; 
            else 
                return strDisplayName; 
        } 
        set 
        { 
            strDisplayName = value; 
        } 
    }
    • le code de votre Membership Provider (LiveMembershipProvider.cs) comme ceci :
      • Ligne 138, 145 :
    MembershipUser user = new MembershipUser(
        ApplicationName,
        bup.DisplayName /* au lieu de bup.Id */,
        bup.Id, bup.Email,
        "",
        "",
        bup.Approved,
        bup.Locked,
        bup.Created,
        bup.LastLogin,
        bup.LastLogin,
        DateTime.Now,
        bup.LockedOn);
      • Ligne 201, 219, 232 :
    col.Add(
        new MembershipUser user = new MembershipUser(
            ApplicationName,
            bup.DisplayName /* au lieu de bup.Id */,
            bup.Id,
            bup.Email,
            "",
            "",
            bup.Approved,
            bup.Locked,
            bup.Created,
            bup.LastLogin,
            bup.LastLogin,
            DateTime.Now,
            bup.LockedOn)
    ); 

    Pour cela, n’oubliez pas de vous assurer que le champ « display name » soit bien marqué comme obligatoire dans la page « liveinfo.aspx »

    <asp:RequiredFieldValidator
        ControlToValidate="tbDisplayName"
        runat="server"
        SetFocusOnError="true" 
        ErrorMessage="Display name is a required field" />

    Ainsi que dans la liste « WindowsLiveUserListName », vous pouvez d’ailleurs modifier cela dans la création automatique de la liste sur la commande stsadm personnalisée addwindowsliveauth (fichier WindowsLiveAuthStsAdmCommand.cs) :

    • Ligne 404 :
    list.Fields.Add("DisplayName", SPFieldType.Text, true); 

    N’hésitez pas à contribuer à ce projet des plus intéressants en postant vos bugs, évolutions. La communauté ne vie que par et grâce a vous. Je vous rappelle l’adresse : http://www.codeplex.com/CKS/Release/ProjectReleases.aspx?ReleaseId=7746

    A vos comptes Live smile_shades

    Configurer l’Alternate Access Mapping

    clip_image002 Pour utiliser l’alternate acces mapping, rendez-vous sur l’administration centrale de SharePoint dans la partie « Application Management ». Cliquez sur « Créer ou étendre une application web »
    clip_image004 Cliquez sur « Etendre une application web »
    clip_image006 Dans l’écran qui suit, faite bien attention d’avoir sélectionné la bonne application web à étendre
    clip_image008 Dans la dernière section, renseignez votre url ainsi que la zone correspondante

    Pour le moment, vous pouvez laisser la valeur par défaut pour le provider, nous reviendrons sur cette étape lors de la configuration de nos custom provider.

    Pour aller plus loin sur l’Alternate access mapping, je vous conseille la lecture de ses articles :

    Tags: , , , , , , ,

    March 12

    [SharePoint] Guide des bonnes pratiques à aborder avant de se lancer dans la création de sites MOSS

    Microsoft vient de mettre a disposition via son site , un ensemble d'articles fort intéressant sur les bonnes pratiques à avoir avant d'aborder votre projet sous MOSS.

    Design and build sites for Office SharePoint Server 2007

    This guide includes the following sections:

    • This section provides overview materials for site architects, planners, and designers to help them understand the end-to-end Office SharePoint Server 2007 site-development methodology and site-customization options. Individual topics discuss the following subjects:

      • Determining the best customization approach for your project.

      • The elements of a Web site based on Office SharePoint Server 2007.

      • The recommended environments in which development should occur.

      • The tools and processes used by a development team to design, build, and deploy Office SharePoint Server 2007 sites.

      • The recommended roles to fill in the team that is responsible for designing and building the site.

      • Typical enterprise site customization scenarios.

      Although the primary focus of this guide is creating a new custom site based on Office SharePoint Server 2007, we also include topics describing considerations and techniques to keep in mind when upgrading custom sites based on Microsoft Office SharePoint Portal Server 2003 or Microsoft Content Management Server 2002 to Office SharePoint Server 2007.

    • This section delineates the multiple recommended environments in which to develop, integrate, test, and pilot a custom solution based on Office SharePoint Server 2007. For each environment, this guide provides the steps required to deploy the environment and provides special setup and configuration considerations based on the environment's role in the development process.

    • This section describes how both code and content customizations are packaged and deployed from one development environment to another. This includes describing the tools used by developers, designers, and authors to package and deploy solutions and content, along with tips and best practices that promote robust, well-tested, secure deployments from one environment to another.

    • Feature roadmap pages provide links to content and resources related to Office SharePoint Server 2007 feature areas such as workflows, forms, document management, or business intelligence. The feature roadmap pages in this guide particularly point to customization resources for site architects, designers, and implementers. A team customizing an enterprise-level portal or Internet site should be aware of all methods of customizing a feature, including using the Office SharePoint Server 2007 user interface, using Microsoft Office SharePoint Designer 2007, and writing custom code. To present this range of options, roadmap pages link to feature-related content and resources aimed at each audience that might participate in customizing an enterprise portal or Web site, including information workers, site designers, developers, and the architects who plan the project. Each roadmap page will be updated with additional links as more resources are published:

    Bonne lecture smile_nerd

    Tags: , , , ,

    March 06

    [SharePoint] Custom Field - Regular expression validator sur CodePlex

    Je viens de poster sur CodePlex mon premier projet SharePoint. Il s'agit d'un champ personnalisé (custom field) permettant de valider la valeur saisie par une expression régulière.

    L’expression régulière est définie au niveau de la création du champ dans la liste. J’y ai aussi ajouté la possibilité de renseigner son propre message d’erreur. Ce message s’affichant si la valeur saisie ne « match » pas l’expression régulière.

    Ce qui donne à peu près ceci en image :

    clip_image002

    clip_image004

    clip_image006

    Pour faire ça dans les règles de l’art (et pour suivre les conseils avisés de Renaud – je vous conseille la lecture de son blog qui est une mine d’or-) j’ai créé une solution qui déploie ce champ personnalisé au travers d’une feature.

    clip_image008

    Rendez-vous donc sur http://www.codeplex.com/SharePointRegEx pour télécharger, tester et me remonter les éventuels bogues, évolutions, ou autres…

    clip_image009

    Voici les 2 ressources MS qui m'ont aidé à la réalisation de ce projet:

    Tags: , , , , , , ,

    March 05

    [SharePoint] 2 excellents utilitaires

    Je suis tombé sur 2 excellents, qui plus est super pratique, utilitaire pour SharePoint développé par Spencer Harbar:

    apm2

     

    addsolution

     

    A ajouter d'urgence dans vos VPCs smile_nerd

    Tags: , , , , , , ,

    March 03

    [SharePoint] Mettez du Silverlight dans votre SharePoint

    On commence à parler de plus en plus de Silverlight et le petit monde de SharePoint ne va pas y échapper. Vous trouverez sur ce site 6 exemples de développement autour de l'axe SharePoint/Silverlight avec codes sources, webcast, documentations et aide à l'installation.

     silverlightForSharepointBlueprint

    Enjoy! smile_regular

    Tags: , , ,

    March 02

    [Commerce Server 2007] Add-in ;o)

    Un petit clin d'oeil à mes anciens collègues d'Altima pour qui cette chanson fut un véritable accompagnateur dans nos longues journées à décortiquer Commerce Server 2007. Vous me croirez ou non, mais grâce à celle-ci, de nombreuses avancées ont été faites smile_tongue.

     

       

    A vos écouteurs... Attention, l'écoute de la dance Russe peut mener rapidement à l'addiction totale smile_tongue

    Tags: , ,