Loupe

Enregistrer un add-in SharePoint via PowerShell sur Office 365

Pour pouvoir déployer un add-in SharePoint sur votre tenant Office 365, il nous faut auparavant le déclarer afin de spécifier le ClientId et ClientSecret de celui-ci.

Pour cela, il existe une page accessible depuis l’URL suivante : http://votretenant.sharepoint.com/_layouts/15/appregnew.aspx (pour plus d’information sur l’enregistrement des add-ins : https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins).

AppNewReg.jpg

On peut soit y générer un id et une clé secrète, soit les spécifier par nous-mêmes.

Seulement, lorsqu’on souhaite industrialiser et scripter ses déploiements, se rendre sur cette page et saisir les bonnes informations n’est pas toujours la bonne solution (erreurs de manipulation ou de recopie par exemple).

Voici donc comment effectuer cette déclaration via PowerShell. Avant tout, il vous faudra installer le module Microsoft Online Services pour PowerShell sur votre poste (http://go.microsoft.com/fwlink/p/?linkid=236297 en 64bits).

Dans l’invite de commande PowerShell, commencez donc par charger le module et vous connecter au tenant (il faut évidemment être admin de celui-ci) :

Import-Module MsOnline

Connect-MsolService

On déclare ensuite les quelques variables qui vont nous servir pour l'enregistrement :

$appClientId = [guid]"EF756153-65B2-4E7E-8AB9-1C379308FC2B" # ClientId de l'addin
$addinAddress = [uri]"https://monaddin.azurewebsites.net" # URL de l'addin
$addinDisplayName = "Mon Addin" # Nom de l'addin
$nbYears = 3 # Nombre d'années max avant renouvellement de la clé secrête, 3 ans maximum
$appClientSecret = "1SMhN5gm9eMr438wkF5FCjaVAG/aSMaSNMXNede1gh4=" # La clé secrète

On vérifie ensuite que l'add-in n'existe pas déjà :

$addin = Get-MsolServicePrincipal -AppPrincipalId $appClientId -ea SilentlyContinue

Enfin, et tout se joue ici, on déclare alors un nouveau Service Principal (notre "identité applicative") à qui on va ajouter plusieurs clés :

if($addin-eq$null)
{
    $addr = New-MsolServicePrincipalAddresses-Address $addinAddress
    $newPrincipal = New-MsolServicePrincipal-DisplayName $addinDisplayName -Type "Symmetric" -AppPrincipalId $appClientId -Addresses @($addr) -StartDate (get-Date) -EndDate ((get-date).addyears($nbYears)) -AccountEnabled $true -ServicePrincipalNames @($AppClientId.ToString(),"$($appClientId.ToString())/$($addinAddress.Authority)") -Value $appClientSecret

    New-MsolServicePrincipalCredential -AppPrincipalId $appClientId -Type Symmetric -Usage Sign -Value $appClientSecret -StartDate $newPrincipal.StartDate -EndDate $newPrincipal.EndDate
    New-MsolServicePrincipalCredential -AppPrincipalId $appClientId -Type Password -Usage Verify -Value $appClientSecret -StartDate $newPrincipal.StartDate -EndDate $newPrincipal.EndDate

    Write-Host"Addin declare"-f Yellow
}
else {
    Write-Host"Addin deja declare"-f Yellow
}
On déclare donc le service principal, avec une date de début et une date de fin (celle-ci est libre, mais la durée de validité est de 3 ans au maximum), et on y ajoute les 2 Service Principals manquants (il y en a 3 pour une déclaration valide).
Et si vous avez un doute, vous pouvez vérifier que l'enregistrement est bien fait en vous rendant à l'adresse http://votretenant.sharepoint.com/_layouts/15/appinv.aspx et en y recherchant votre add-in à l'aide de son identifiant :
AppInv
Avec les commandes PowerShell du PnP permettant de publier votre addin dans le catalogue, vous avez le moyen d'automatiser complètement le déploiement de vos addins. Il n'y a plus qu'à héberger votre addin sur Docker et ce sera la cerise sur le gâteau !
Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus