Cet article est le second d’une série de 3:
Je vous recommande vivement de lire le premier article qui définit le besoin et introduit les concepts qui seront mis en place pour arriver à nos fins.
Cette deuxième partie est consacrée à la configuration de Sharepoint pour permettre une authentification Forms Based avec les claims. En effet, une application Silverlight devra s’authentifier à Sharepoint en Forms. Or, Sharepoint permet l’authentification Forms Based uniquement à travers les Claims.
N’hésitez pas à lire ce post qui explique simplement le fonctionnement des Claims et les mécanismes d’authentification en général dans Sharepoint 2010.
Il y a 2 grandes parties dans ce post:
[Vous pouvez sauter les étapes 1 et 2 si vous créez une nouvelle WebApp]
Cette étape va nous permettre d’identifier la WebApp à traiter, et de vérifier s’il faut la faire évoluer en mode Claims pour supporter l’authentification FBA.
Lancez la console d’administration de Sharepoint :
Allez dans Site Actions/Site Settings :
Puis dans Application Management à partir du menu de gauche, choisissez Manage Web Applications :
Sélectionnez la Web App qui héberge la collection de sites à laquelle vous souhaitez accéder depuis un Windows Phone 7 (la colonne URL devrait vous permettre de l’identifier facilement), puis cliquez sur “Authentication Providers” dans le bandeau:
Cliquez sur Default pour voir la configuration du mode d’authentification de votre Web App :
Si vous voyez “Windows” apparaitre en tant que provider c’est qu’il faut convertir votre WebApp pour utiliser les claims.
La procédure de conversion ne peut s’effectuer qu’en Power Shell.
Lancez le management shell en mode administrateur:
Tapez le script suivant, en spécifiant l’URL de votre WebApp (ex : “http://stephe-msft:16483”) et votre identifiant d’administrateur (ex: “EUROPE\stephe”) :
$WebAppName = "http:// yourWebAppUrl"$account = "yourDomain\yourUser"$wa = get-SPWebApplication $WebAppNameSet-SPwebApplication $wa -AuthenticationProvider (New-SPAuthenticationProvider) -Zone Default
$wa = get-SPWebApplication $WebAppName$account = (New-SPClaimsPrincipal -identity $account -identitytype 1).ToEncodedString()
$zp = $wa.ZonePolicies("Default")$p = $zp.Add($account,"PSPolicy")$fc=$wa.PolicyRoles.GetSpecialRole("FullControl")$p.PolicyRoleBindings.Add($fc)$wa.Update()
$wa = get-SPWebApplication $WebAppName$wa.MigrateUsers($true)
A ce stade, vous disposez d’une WebApp en mode Claims.
Rejouez la séquence de l’étape 1. dans la console d’administration, pour vous retrouver devant le menu “Authentication Providers” de la WebApp qui doit à présent afficher un provider de type Claims :
Cliquez sur Default pour éditer les paramètres d’authentification, et activez :
Cliquez Save en base de l’écran
Nous allons modifier 3 fichiers de configuration pour y définir le provider “admembers”.
Pour cela, il faut passer par le Gestionnaire de Services IIS que vous pouvez lancer en tapant “iis” dans l’intitulé de commande du menu démarrer.
Les fichiers de configurations se trouvent respectivement dans les répertoires associés aux 3 éléments encadrés, qui sont accessibles en faisant un click droit sur l’élément, puis “Explorer”.
Dans notre exemple ma WebApp est “Sharepoint – 16483”.
Editez le fichier web.config avec notepad, un quelconque éditeur xml ou même Visual Studio. Recherchez la section suivante dans le fichier :
<membership defaultProvider="i"> <providers> <add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> </providers> </membership>
<add name="admembers" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="adconn" enableSearchMethods="true" attributeMapUsername="sAMAccountName" />
<membership defaultProvider="i"> <providers> <add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <add name="admembers" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="adconn" enableSearchMethods="true" attributeMapUsername="sAMAccountName" /> </providers></membership>
<connectionStrings> <add name="adconn" connectionString="LDAP://europe.corp.microsoft.com/DC=europe,DC=corp,DC=microsoft,DC=com" /></connectionStrings>
...</Sharepoint> <connectionStrings> <add name="adconn" connectionString="LDAP://europe.corp.microsoft.com/DC=europe,DC=corp,DC=microsoft,DC=com" /> </connectionStrings> <system.web> <securityPolicy> <trustLevel name="WSS_Medium" policyFile="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\config\wss_mediumtrust.config" />...
<membership defaultProvider="admembers"> <providers> <add name="admembers" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="adconn" enableSearchMethods="true" attributeMapUsername="sAMAccountName" /> </providers> </membership>
<connectionStrings> <add name="adconn" connectionString="LDAP://europe.corp.microsoft.com/DC=europe,DC=corp,DC=microsoft,DC=com"/> </connectionStrings> <system.web> <membership defaultProvider="admembers"> <providers> <add name="admembers" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="adconn" enableSearchMethods="true" attributeMapUsername="sAMAccountName" /> </providers> </membership> </system.web>
Dans l’administation centrale de Sharepoint, placez-vous sur la page de configuration des WebApp (suivez l’étape 1. si vous souhaitez être guidés) :
Sélectionnez votre WebApp et dans le bandeau cliquez sur “User Policy”. Seuls les utilisateurs NTLM sont présents dans la policy, nous allons y ajouter ceux qui sont autorisés à se connecter en FBA. Cliquez sur “Add Users”.
Puis Next
Dans la section Users, cliquez sur l’annuaire pour rechercher des utilisateurs:
Dans mon cas, j’autorise tous les membres du provider LDAP admembers à avoir le contrôle total. Vous pouvez être plus restrictif en choisissant certains comptes de l’AD, mais il faut les rechercher dans la section “Forms Auth” et non pas “Active Directory” pour qu’ils soient associés à l’authentification FBA.
Cliquez Ok.
Cochez les permissions adéquates (Full Control dans mon cas) et cliquez sur Finish.
Vous pouvez à présent vous connecter à votre site Sharepoint avec 2 modes d’authentification différents, mais tous deux basés sur le même Active Directory:
D’une part, vos utilisateurs peuvent toujours accéder au site comme auparavant, à partir d’un navigateur en utilisant les credentials de la session(authentification NTLM). Evidemment, ils peuvent également utiliser l’authentification Forms Based dans le navigateur s’ils le souhaitent et si vous leur en avez donné les autorisations. Dans ce cas, ne préfixez pas l’identifiant par le nom de domaine lorsque vous saisissez les credentials (ex : “stephe” et non pas “EUROPE\stephe”).
D’autre part, vos applications Windows Phone 7 accèderont à Sharepoint en passant par l’authentification Forms Based.
En fait, le plus dur est fait. Vous pouvez maintenant vous attaquer à l’application Windows Phone 7 :
Accéder à Sharepoint dans une application Silverlight pour Windows Phone 7 (3/3) : Côté client Silverlight pour WP7
Merci pour toutes ces infos Stéphanie :)
Je teste ça ce week-end!
Merci pour ce post très utile et bien illustré.
Une question cependant : est-il possible d'accorder des permissions à un compte, qu'il vienne par la zone AD ou la zone formulaire, sans ête obligé d'ajouter 2 autorisations (une pour chaque provider d'authent) ? Est-ce que Claims permet de faire ça ?
Merci.
Bonjour Cédric, je n'ai pas creusé la question, il faut dire que je suis plutôt "dev driven" ;o). Mon premier avis (à prendre avec des pincettes) est qu'il faut forcément renseigner les utilisateurs NTLM et FB séparément, car ils sont effectivement vus comme des utilisateurs différents, avec une provenance différente, lors de ce premier filtre. Ce n'est qu'ensuite au niveau du provider que l'on pioche dans la même source (=AD). Le fait qu'on utilise un AD commun est finalement transparent pour SP.
A bientôt