reseau:cloud:azure:configurerapppoursharepoint
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine 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.fr | reseau: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 | ||
| - | |||
| - | |||
| - | |||
| </ | </ | ||
| - | * Notez l' | + | * Notez l' |
| < | < | ||
| Ligne 128: | Ligne 123: | ||
| $cert.HasPrivateKey doit renvoyer True | $cert.HasPrivateKey doit renvoyer True | ||
| - | + | === Export du certificat PUBLIC | |
| - | + | ||
| - | * Export du certificat PUBLIC à importer dans Entra ID | + | |
| < | < | ||
| Ligne 167: | Ligne 160: | ||
| </ | </ | ||
| - | * Donner accès à l' | + | === Exporter |
| < | < | ||
| - | Grant-MgSitePermission -SiteId | + | $thumb = "EMPREINTE_DU_CERTIFICAT" |
| - | Grant-MgSitePermission ` | + | $cert = Get-Item "Cert: |
| - | -SiteId | + | |
| - | | + | |
| - | -GrantedToIdentities @{ application = @{ id = " | + | |
| + | Export-PfxCertificate ` | ||
| + | -Cert $cert ` | ||
| + | -FilePath " | ||
| + | -Password (ConvertTo-SecureString -String " | ||
| </ | </ | ||
| + | |||
| + | === Importer un PFX sur une autre machine === | ||
| + | |||
| + | < | ||
| + | Import-PfxCertificate ` | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | === Générer une clé PKCS#8 === | ||
| + | |||
| + | * Recharger le PFX | ||
| + | |||
| + | < | ||
| + | $pfxPath = " | ||
| + | $pfxPassword = " | ||
| + | |||
| + | $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2( | ||
| + | $pfxPath, | ||
| + | $pfxPassword, | ||
| + | [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]:: | ||
| + | ) | ||
| + | </ | ||
| + | |||
| + | * Récupérer la clé privée RSA | ||
| + | |||
| + | < | ||
| + | $rsa = $cert.PrivateKey | ||
| + | </ | ||
| + | |||
| + | * Exporter la clé AU FORMAT PKCS#8 | ||
| + | |||
| + | < | ||
| + | # Récupère les paramètres | ||
| + | $params = $rsa.ExportParameters($true) | ||
| + | |||
| + | # Crée un RSA moderne | ||
| + | $rsa2 = [System.Security.Cryptography.RSA]:: | ||
| + | $rsa2.ImportParameters($params) | ||
| + | |||
| + | # Export PKCS#8 | ||
| + | $pkcs8 = $rsa2.ExportPkcs8PrivateKey() | ||
| + | |||
| + | $base64 = [System.Convert]:: | ||
| + | $pkcs8, | ||
| + | [System.Base64FormattingOptions]:: | ||
| + | ) | ||
| + | |||
| + | |||
| + | $pem = @" | ||
| + | -----BEGIN PRIVATE KEY----- | ||
| + | $base64 | ||
| + | -----END PRIVATE KEY----- | ||
| + | "@ | ||
| + | |||
| + | $pem | Set-Content ` | ||
| + | -Path C: | ||
| + | -Encoding ASCII | ||
| + | </ | ||
| + | |||
| + | === 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: | ||
| + | * 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' | ||
| + | |||
| + | 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 | ||
| + | |.cer|clé publique|Entra ID, SharePoint| | ||
| + | |.pfx|clé publique + clé privée|Authentification| | ||
| + | |.pfx + mdp|portable sécurisé|Serveur, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Donner accès à l' | ||
| * l' | * l' | ||
| Ligne 203: | Ligne 293: | ||
| </ | </ | ||
| - | |||
| * Se reconnecter en AppOnly : | * Se reconnecter en AppOnly : | ||
| < | < | ||
| - | |||
| Connect-MgGraph ` | Connect-MgGraph ` | ||
| - | | + | -TenantId "< |
| - | -ClientId "5c82fc87-6e0c-413f-ac12-6d784af9a249" ` | + | |
| - | -CertificateThumbprint "97F825CFD5C0371D28E1D691140A084B9C2C4386" | + | |
| </ | </ | ||
| - | * Puis : | + | * Puis Tester l’accès au site précis: |
| < | < | ||
| Ligne 220: | Ligne 308: | ||
| </ | </ | ||
| - | * Tester l’accès avec Microsoft Graph d'un site précis | + | |
| + | ==== Créer | ||
| + | |||
| + | * Identifier le site SharePoint en itilisant le chemin direct : | ||
| < | < | ||
| - | Get-MgSite -SiteId "< | + | $site = Get-MgSite -SiteId "mondomaine.sharepoint.com:/ |
| + | $site.Id | ||
| + | |||
| + | => Afficher le GUID du site du type : | ||
| + | xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | ||
| </ | </ | ||
| - | Variables requises | + | * Récupérer le drive du site (Documents) : chaque site a une document library principale. |
| < | < | ||
| - | $tenantId | + | $drive = Get-MgSiteDrive -SiteId $site.Id |
| - | $clientId | + | $drive.Id |
| - | $clientSecret | + | |
| - | $siteId | + | => Affiche un DriveId |
| + | Type : documentLibrary | ||
| </ | </ | ||
| - | * Obtenir | + | * Créer |
| < | < | ||
| - | $tokenBody = @{ | + | New-MgDriveRootChild ` |
| - | | + | -DriveId |
| - | | + | -AdditionalProperties |
| - | client_secret = $clientSecret | + | " |
| - | grant_type | + | " |
| - | } | + | |
| + | } | ||
| - | | + | |
| + | => Résultat attendu | ||
| + | Id | ||
| + | Name : Test-Dossier | ||
| + | => Dossier créé avec succès à vérifier | ||
| + | </ | ||
| + | |||
| + | * lister les dossier à la racine | ||
| < | < | ||
| - | $headers | + | $items = Get-MgDriveRootChild -DriveId |
| - | $body = '{ " | + | </ |
| - | Invoke-RestMethod ` | + | * Récupérer le dossier General |
| - | -Uri " | + | |
| - | | + | < |
| - | | + | $parent = $items | Where-Object { $_.Name |
| - | -Body $body ` | + | $parent.Id |
| - | | + | |
| </ | </ | ||
| + | * création du sous-dossier | ||
| + | |||
| + | < | ||
| + | New-MgDriveItemChild ` | ||
| + | -DriveId $drive.Id ` | ||
| + | -DriveItemId $parent.Id ` | ||
| + | -AdditionalProperties @{ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| ==== 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
