none
Création d'une collection de site SharePoint 2013 par webservice _vti_adm/admin.asmx ou perso impossible RRS feed

  • Question

  • Bonjour,

    J’essaie de créer une collection de site sur une Installation SharePoint 2013 depuis une application extérieur pour une raison métier.

    En utilisant le webservice _vti_adm/admin.asmx j’arrive à créer une nouvelle collection en utilisant l’impersonnation que dans le cas où l'authentification de l'application Web est en NTLM.

    Dès lors ou je suis en NTLM et en Fédération j’ai le droit à une SoapException :

     "User cannot be found." ErrorCode "0x80131600"

    J’ai donc décidé de créer un webservice (bien securisee) exécutant un script PowerShell permettant de créer une application web avec la commande SP-Web : "New-SPSite".

    Le site qui nous a pointés vers l'idée c'est le Doc de MSDN [0] parmi les exemples. Malheureusement ces exemples ne marchent pas, car le parameter "-owner" n'est pas connu, au moins dans notre version du SP.

    Alors nous essayons avec les commandes suivante [1]:

     $web = "http://machine/sites/site1"

     $user = New-SPClaimsPrincipal -IdentityType WindowsSamAccountName -Identity $(whoami)

     New-SPSite -Name "site1" -Url $web -OwnerAlias $user -Template "STS#1"

    Ce script fonctionne correctement seulement si je lance powerShell en « run as administrateur ». Or, je ne sais pas s’il est possible d’exécuter un powershell en admin via webservice. Dès lors ou le script n’est pas lancé en administrateur, j’ai le droit au message suivant :

     New-SPSite : Cannot complete this action.

     Please try again.

    [0] http://technet.microsoft.com/en-us/library/ff607546.aspx

    [1] http://blogs.msdn.com/b/mutaz/archive/2012/05/29/new-spsite-and-new-spclaimprincipal.aspx

    Si vous avez des petites idées je suis preneur :D

     

    lundi 14 janvier 2013 16:29

Réponses

Toutes les réponses

  • Bonjour

    Pourquoi executer du powershell depuis votre webservice (qui est sur votre serveur SharePoint) plutôt que d'utiliser le modèle objet de sharepoint directement ?

    Avec un SPSecurity.RunWithElevatedPrivileges ça devrait le faire....


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    jeudi 24 janvier 2013 08:31
  • Le résultat est le même avec une custom web service utilisant l'api Sharepoint

    :

    SPSecurity.RunWithElevatedPrivileges(delegate

                    {

                        SPWebApplication WebApplication = SPWebApplication.Lookup(new Uri(WebApplicationUrl));

                        using (SPSite SiteCollection = WebApplication.Sites.Add(RelativeUrl, SiteTitle, SiteDescription, LanguageCode, SiteTemplate, PrimaryAdmin, string.Empty, string.Empty, SecondaryAdmin, string.Empty, string.Empty))

                        {

                            SiteCollection.Features.Add(new Guid("a0eeb397-f345-938b-145b-2d7468acf5f2"));

                        }

                    });

    Dès lors ou nous sommes en authentification NTLM unique, ce code fonctionne correctement.

    Dès lors ou l’on ajoute une double authentification NTLM + Fédération (ADFS) nous avons le résultat suivant : Les administrateurs de la collection de site ne sont pas reconnus 

    jeudi 24 janvier 2013 08:38
  • bonjour,

    c'est normal le fait que le code ne fonctionne plus quand on a plusieurs modes d'authentification.

    le webservice ne sait pas gérer ca.

    il faut d'abord authentifier l'utilisateur puis utiliser les cookies résultant de l'authentification dans le web service.

    walid.

    mercredi 13 février 2013 18:00
  • Bonjour,

    est ce que le problème est résolu ?

    Walid.

    vendredi 15 février 2013 21:11
  • Bonjour,

    le problème à été résolu. Il fallait utiliser l’authentification Windows avec son écriture au format claim. 

    Merci encore

    lundi 18 février 2013 08:18