Outils pour utilisateurs

Outils du site


reseau:cloud:azure:configurerapppoursharepoint

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
reseau:cloud:azure:configurerapppoursharepoint [2026/04/05 23:15] – [Utilisation d'un certificat] techer.charles_educ-valadon-limoges.frreseau:cloud:azure:configurerapppoursharepoint [2026/04/10 22:24] (Version actuelle) – [Utilisation d'un certificat] techer.charles_educ-valadon-limoges.fr
Ligne 100: Ligne 100:
   -KeyLength 2048 `   -KeyLength 2048 `
   -NotAfter (Get-Date).AddYears(4)   -NotAfter (Get-Date).AddYears(4)
- 
-$cert.Thumbprint 
- 
- 
- 
 </code> </code>
  
-  * Notez l'empreinte du certficat+  * Notez l'empreinte du certificat
  
 <code> <code>
Ligne 128: Ligne 123:
 $cert.HasPrivateKey doit renvoyer True $cert.HasPrivateKey doit renvoyer True
  
-   +=== Export du certificat PUBLIC (.cer) à importer dans Entra ID ===
- +
-  * Export du certificat PUBLIC à importer dans Entra ID+
  
 <code> <code>
Ligne 167: Ligne 160:
 </code> </code>
  
-  * Donner accès à l'application sur le site+=== Exporter le certificat pour obtenir un PFX PKCS#1 (clé privée incluse) === 
  
 <code> <code>
-Grant-MgSitePermission -SiteId $site.Id -Roles "write" -GrantedToIdentities @{ application = @{ id = "APP_ID} }+$thumb = "EMPREINTE_DU_CERTIFICAT"
  
-Grant-MgSitePermission ` +$cert = Get-Item "Cert:\CurrentUser\My\$thumb"
-    -SiteId $site.Id ` +
-    -Roles "write" ` +
-    -GrantedToIdentities @{ application = @{ id = "APP_ID} }+
  
 +Export-PfxCertificate `
 +  -Cert $cert `
 +  -FilePath "graph-auth.pfx" `
 +  -Password (ConvertTo-SecureString -String "MotDePasseFort123!" -AsPlainText -Force)
 </code> </code>
 +
 +=== Importer un PFX sur une autre machine ===
 +
 +<code>
 +Import-PfxCertificate `
 +   -FilePath "fichier.pfx" `
 +   -CertStoreLocation Cert:\CurrentUser\My `  
 +   -Password (ConvertTo-SecureString -String "MotDePasseFort123!" -AsPlainText)
 +</code>
 +
 +=== Générer une clé PKCS#8 ===
 +
 +  * Recharger le PFX 
 +
 +<code>
 +$pfxPath = "c:\temp\fichier.pfx"
 +$pfxPassword = "TempPfxPassword!ChangeMe"
 +
 +$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(
 +    $pfxPath,
 +    $pfxPassword,
 +    [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
 +)
 +</code>
 +
 + * Récupérer la clé privée RSA
 +
 +<code>
 +$rsa = $cert.PrivateKey
 +</code>
 +
 +  * Exporter la clé AU FORMAT PKCS#8
 +
 +<code>
 +# Récupère les paramètres
 +$params = $rsa.ExportParameters($true)
 +
 +# Crée un RSA moderne
 +$rsa2 = [System.Security.Cryptography.RSA]::Create()
 +$rsa2.ImportParameters($params)
 +
 +# Export PKCS#8
 +$pkcs8 = $rsa2.ExportPkcs8PrivateKey()
 +
 +$base64 = [System.Convert]::ToBase64String(
 +    $pkcs8,
 +    [System.Base64FormattingOptions]::InsertLineBreaks
 +)
 +
 +
 +$pem = @"
 +-----BEGIN PRIVATE KEY-----
 +$base64
 +-----END PRIVATE KEY-----
 +"@
 +
 +$pem | Set-Content `
 +  -Path C:\Temp\fichier.key `
 +  -Encoding ASCII
 +</code>
 +
 +=== Résumé .cer .pfx ===
 +
 +<WRAP center round info>
 +Un fichier .cer contient uniquement la **clé publique du certificat**. Cela permet : 
 +  * de déclarer le certificat dans Entra ID
 +  * permet à Microsoft de vérifier les signatures
 +
 +La clé privée est déjà stockée dans Windows :
 +  * dans **Cert:\LocalMachine\My** ou **Cert:\CurrentUser\My**
 +  * aucun PFX n’est nécessaire tant que l'on se connecte depuis le PC où se trouve la clé privée. En indiquant l'empreinte de la clé (thumbprint), cela permet de sélectionner la bonne clé privée.
 +
 +Un fichier .cer ne permet pas :
 +  * de s’authentifier
 +  * de signer
 +
 +Un fichier .pfx (format PFX / PKCS#12) contient :
 +  * la clé publique
 +  * la clé privée
 +  * (optionnel) la chaîne de certificats
 +  * et est protégé par une passphrase
 +
 +C’est le seul format portable qui permet :
 +  * d’importer un certificat avec clé privée
 +  * d’authentifier une application sur une autre machine
 +  * d’utiliser le certificat sur Linux / AWX / Docker / CI/CD
 +
 +^ Format    Contient  ^  Usage  ^
 +|.cer|clé publique|Entra ID, SharePoint|
 +|.pfx|clé publique + clé privée|Authentification|
 +|.pfx + mdp|portable sécurisé|Serveur, automatisation|
 +</WRAP>
 +
 +
 +==== Donner accès à l'application sur le site Sharepoint====
  
    * l'administrateur doit donner l'accès au site voulu    * l'administrateur doit donner l'accès au site voulu
Ligne 203: Ligne 293:
 </code> </code>
    
- 
   * Se reconnecter en AppOnly :   * Se reconnecter en AppOnly :
  
 <code> <code>
- 
 Connect-MgGraph `   Connect-MgGraph `  
-    -TenantId "1ae69c2d-61b2-4de4-84c7-2a4dd0de7330" `   +   -TenantId "<TENANT_ID>" `   
-    -ClientId "5c82fc87-6e0c-413f-ac12-6d784af9a249" `   +   -ClientId "<APP_ID>" `   
-    -CertificateThumbprint "97F825CFD5C0371D28E1D691140A084B9C2C4386"+   -CertificateThumbprint "<THUMBPRINT>
 </code> </code>
  
-  * Puis :+  * Puis Tester l’accès au site précis:
  
 <code> <code>
Ligne 220: Ligne 308:
 </code> </code>
  
-  * Tester l’accès avec Microsoft Graph d'un site précis + 
 +==== Créer un dossier dans le site SharePoint ==== 
 + 
 +  * Identifier le site SharePoint en itilisant le chemin direct :
  
 <code> <code>
-Get-MgSite -SiteId "<nom-domaine>.sharepoint.com:/sites/<nom-site>"+$site = Get-MgSite -SiteId "mondomaine.sharepoint.com:/sites/MonSite" 
 +$site.Id 
 + 
 +=Afficher le GUID du site du type : 
 +xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 </code> </code>
  
-Variables requises+   * Récupérer le drive du site (Documents) : chaque site a une document library principale. 
 <code> <code>
-$tenantId     "<TON_TENANT_ID>" +$drive Get-MgSiteDrive -SiteId $site.Id 
-$clientId     = "<APP_ID>" +$drive.Id 
-$clientSecret "<CLIENT_SECRET>" + 
-$siteId       = $site.Id+=> Affiche un DriveId 
 +Type : documentLibrary
 </code> </code>
  
-  * Obtenir un token avec l’application+  * Créer un dossier À LA RACINE (test simple).
  
 <code> <code>
-$tokenBody = @{ +New-MgDriveRootChild ` 
-    client_id     $clientId +  -DriveId $drive.Id ` 
-    scope         = "https://graph.microsoft.com/.default" +  -AdditionalProperties @{ 
-    client_secret = $clientSecret +      "name" "Test-Dossier" 
-    grant_type    = "client_credentials+      "folder" @{} 
-}+      "@microsoft.graph.conflictBehavior" = "rename
 +  }
  
-  *  Créer un dossier dans le site SharePoint+ 
 +=> Résultat attendu 
 +Id   : 01ABCDEF.... 
 +Name : Test-Dossier 
 +=> Dossier créé avec succès à vérifier dans SharePoint 
 +</code> 
 + 
 +  * lister les dossier à la racine
  
 <code> <code>
-$headers @{ Authorization = "Bearer $token" } +$items Get-MgDriveRootChild -DriveId $drive.Id 
-$body = '{ "name": "DossierTestCopilot", "folder": {} }'+</code>
  
-Invoke-RestMethod ` +  * Récupérer le dossier General 
-    -Uri "https://graph.microsoft.com/v1.0/sites/$siteId/drive/root/children" ` + 
-    -Headers $headers ` +<code> 
-    -Method POST ` +$parent = $items | Where-Object { $_.Name -eq "General
-    -Body $body ` +$parent.Id
-    -ContentType "application/json"+
 </code> </code>
  
 +  * création du sous-dossier
 +
 +<code>
 +New-MgDriveItemChild `
 +  -DriveId $drive.Id `
 +  -DriveItemId $parent.Id `
 +  -AdditionalProperties @{
 +      "name" = "Test-SousDossier"
 +      "folder" = @{}
 +      "@microsoft.graph.conflictBehavior" = "rename"
 +  }
 +</code>
 ==== Installer le module module PnP.PowerShell ==== ==== Installer le module module PnP.PowerShell ====
 PnP.PowerShell supporte : PnP.PowerShell supporte :
reseau/cloud/azure/configurerapppoursharepoint.1775423711.txt.gz · Dernière modification : 2026/04/05 23:15 de techer.charles_educ-valadon-limoges.fr