Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’authentification multifacteur (MFA) permet de protéger l’accès aux données et aux applications tout en conservant la simplicité pour les utilisateurs. Elle fournit une sécurité supplémentaire en exigeant une seconde forme d’authentification et fournit une authentification forte par le biais d’une gamme de méthodes d’authentification faciles à utiliser. Les utilisateurs peuvent ou non être contestés pour l’authentification multifacteur en fonction des décisions de configuration prises par un administrateur.
Modèle d’application sécurisé
La condition requise pour l’authentification multifacteur peut compliquer toute automatisation que vous avez développée, car une deuxième forme d’authentification doit être fournie lors de l’authentification. Pour répondre à cette exigence, le modèle d’application sécurisé a été développé pour fournir des conseils sur la façon dont l’authentification appropriée peut être effectuée dans des scénarios non interactifs. Ce modèle est composé de deux étapes distinctes
Étape | Description |
---|---|
Consentement | Vous vous authentifierez de manière interactive à l’aide du flux de code d’autorisation ou du flux de code d’appareil. La réponse d’Azure Active Directory contiendra un jeton d’accès et un jeton d’actualisation. La valeur du jeton d’actualisation doit être stockée dans un endroit sécurisé, comme Azure Key Vault. Cette valeur sera utilisée par votre application, ou script, au lieu des informations d’identification utilisateur lors de l’authentification. |
Exchange | À l’aide du jeton d’actualisation stocké en toute sécurité, généré lors de l’étape de consentement, vous allez demander un nouveau jeton d’accès à Azure Active Directory. Pour plus d’informations sur la valeur du jeton d’actualisation, consultez Actualiser le jeton d’accès . |
Important
Par défaut, la durée de vie d’un jeton d’actualisation est de 90 jours. Il est donc important que vous disposiez d’un processus de mise à jour du jeton d’actualisation avant l’expiration. S’il expire, vous recevrez une erreur similaire à ce qui suit lorsque vous tentez de l’échanger contre un jeton d’accès Le jeton d’actualisation a expiré en raison de l’inactivité. Le jeton a été émis le 2019-01-02T09:19:53.5422744Z et était inactif pendant 90.00:00:00.
Consentement
L’étape de consentement peut être effectuée à l’aide de plusieurs méthodes différentes. Lors de l’utilisation de PowerShell, il est recommandé d’utiliser l’applet de commande New-SecMgmtAccessToken . Voici un exemple de la façon dont vous pouvez demander un nouveau jeton d’accès à utiliser avec Microsoft Graph ou ce module PowerShell.
$credential = Get-Credential
New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
Important
Lorsque vous utilisez le UseAuthorizationCode
paramètre, vous serez invité à l’authentification de manière interactive à l’aide du flux de code d’autorisation. La valeur de l’URI de redirection est générée dynamiquement. Ce processus de génération tente de trouver un port entre 8400 et 8999 qui n’est pas utilisé. Une fois qu’un port disponible a été trouvé, la valeur de l’URL de redirection est construite (par exemple http://localhost:8400). Il est donc important que vous ayez configuré la valeur de l’URI de redirection pour votre application Azure Active Directory en conséquence.
La première commande obtient les informations d’identification du principal de service (identificateur d’application et secret), puis les stocke dans la $credential
variable. La deuxième commande génère un nouveau jeton d’accès à l’aide des informations d’identification du principal de service stockées dans la $credential
variable et du flux de code d’autorisation. La sortie de cette commande contient plusieurs valeurs, y compris un jeton d’actualisation. Cette valeur doit être stockée dans un endroit sécurisé, tel qu’Azure Key Vault, car elle sera utilisée à la place des informations d’identification utilisateur dans les opérations futures.
Exchange
L’étape d’échange peut être effectuée à l’aide d’un certain nombre de méthodes différentes. Lors de l’utilisation de PowerShell, il est recommandé d’utiliser l’applet de commande New-SecMgmtAccessToken . Voici un exemple d’échange d’un jeton d’actualisation contre un jeton d’accès.
$credential = Get-Credential
$refreshToken = '<refreshToken>'
New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
La première commande obtient les informations d’identification du principal de service (identificateur d’application et secret), puis les stocke dans la $credential
variable. La troisième commande génère un nouveau jeton d’accès à l’aide des informations d’identification du principal de service stockées dans la $credential
variable et du jeton d’actualisation stocké dans la variable pour l’authentification $refreshToken
.
Exemples
Les sections suivantes montrent comment utiliser l’applet de commande New-SecMgmtAccessToken pour demander des jetons d’accès et se connecter à d’autres modules PowerShell couramment utilisés.
Azure
Azure PowerShell
$credential = Get-Credential
$refreshToken = '<RefreshToken>'
$azureToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://management.azure.com//user_impersonation' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
$graphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
# Az Module
Connect-AzAccount -AccessToken $token.AccessToken -AccountId 'azureuser@contoso.com' -GraphAccessToken $graphToken.AccessToken -TenantId 'xxxx-xxxx-xxxx-xxxx'
Notes
Lorsque vous vous connectez à un environnement où vous disposez d’un administrateur pour le compte de privilèges, vous devez spécifier l’identificateur de locataire pour l’environnement cible via le Tenant
paramètre . En ce qui concerne le programme Fournisseur de solutions cloud, cela signifie que vous allez spécifier l’identificateur de locataire du locataire Azure Active Directory du client à l’aide du Tenant
paramètre .
Microsoft 365
Azure Active Directory
$credential = Get-Credential
$refreshToken = '<RefreshToken>'
$aadGraphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
$graphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
Connect-AzureAD -AadAccessToken $aadGraphToken.AccessToken -AccountId 'azureuser@contoso.com' -MsAccessToken $graphToken.AccessToken
Notes
Lorsque vous vous connectez à un environnement où vous disposez d’un administrateur pour le compte de privilèges, vous devez spécifier l’identificateur de locataire pour l’environnement cible via le Tenant
paramètre . En ce qui concerne le programme Fournisseur de solutions cloud, cela signifie que vous allez spécifier l’identificateur de locataire du locataire Azure Active Directory du client à l’aide du Tenant
paramètre .
Exchange Online PowerShell
Lors de la génération du jeton d’actualisation initial, vous devez utiliser les éléments suivants
$token = New-SecMgmtAccessToken -Module ExchangeOnline
Important
Après avoir appelé les commandes ci-dessus, vous constaterez que la valeur du jeton d’actualisation est disponible via $token.RefreshToken
. Cette valeur doit être stockée dans un dépôt sécurisé tel qu’Azure Key Vault pour garantir la sécurité appropriée, car elle sera utilisée à la place des informations d’identification.
Utilisez ce qui suit pour générer un nouveau jeton d’accès à l’aide de l’actualisation, puis créer la session où vous vous connecterez à Exchange Online PowerShell
$customerId = '<CustomerId>'
$customerDomainName = '<CustomerDomainName>'
$refreshToken = '<RefreshTokenValue>'
$upn = '<UPN-used-to-generate-the-refresh-token>'
$token = New-SecMgmtAccessToken -RefreshToken $token.RefreshToken -Scopes 'https://outlook.office365.com/.default' -Tenant $customerId -ApplicationId 'a0c73c16-a7e3-4564-9a95-2bdf47383716'
$tokenValue = ConvertTo-SecureString "Bearer $($token.AccessToken)" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($upn, $tokenValue)
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid?DelegatedOrg=$($customerDomainName)&BasicAuthToOAuthConversion=true" -Credential $credential -Authentication Basic -AllowRedirection
Import-PSSession $session
Important
L’identificateur d’application a0c73c16-a7e3-4564-9a95-2bdf47383716 est pour l’application Azure Active Direcotry Exchange Online PowerShell. Lorsque vous demandez un jeton d’accès ou d’actualisation à utiliser avec Exchange Online PowerShell, vous devez utiliser cette valeur.
MS Online
$credential = Get-Credential
$refreshToken = '<RefreshToken>'
$aadGraphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
$graphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
Connect-MsolService -AdGraphAccessToken $aadGraphToken.AccessToken -MsGraphAccessToken $graphToken.AccessToken