0
votes

Dans Azure AD, comment définir et lire le courrier électronique principal d'un utilisateur via PowerShell (par exemple, Set-AzureADUser et Get-AzureADUser)?

J'ai un utilisateur dans Azure AD. Sous "Méthodes d'authentification", l'adresse e-mail "principale" de cet utilisateur est définie sur une certaine valeur. Tous les autres champs pour les informations de contact d'authentification (par exemple, Téléphone, Autre téléphone et Autre adresse e-mail) sont vides. entrez la description de l'image ici

Je regarde la documentation publique de Microsoft concernant les applets de commande PowerShell Set-AzureADUser et Get-AzureADUser:

https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-sspr-authenticationdata

Cette documentation mentionne comment définir des e-mails alternatifs, mais ne mentionne pas comment définir l'adresse e-mail principale de l'utilisateur.

En outre, l'applet de commande PowerShell Get-AzureADUser ne semble pas renvoyer l'adresse e-mail principale de l'utilisateur ( capture d'écran ici ), même si l'e-mail principal est clairement défini lors de l'affichage de l'utilisateur dans le portail Azure. entrez la description de l'image ici

Alors, comment puis-je définir et lire le courrier électronique principal d'un utilisateur dans Azure AD par programme ?


2 commentaires

Si Mail est vide, est-ce que ProxyAddresses contient une valeur SMTP: :?


ProxyAddresses me semble vide. Capture d'écran


3 Réponses :


0
votes

D'après la capture d'écran, cet utilisateur ressemble à un utilisateur synchronisé dans une configuration hybride sans boîte aux lettres.

Si l'utilisateur avait une boîte aux lettres, l'adresse principale sera renseignée, car aucune adresse je suppose que l'utilisateur n'a pas de boîte aux lettres.

S'il s'agit d'un utilisateur de synchronisation, vous devrez mettre à jour les informations sur Local AD et le laisser se synchroniser avec Azure.

J'espère que cela t'aides.


3 commentaires

Je tiens à préciser que le contexte de la définition du courrier électronique «principal» d'un utilisateur est dans le contexte de la réinitialisation du mot de passe en libre-service (SSPR). Donc, cet e-mail ne peut pas être "votre adresse e-mail professionnelle ou scolaire principale". Capture d'écran . L'idée serait donc de définir un e-mail tel qu'un @ gmail.com pour SSPR. Existe-t-il un moyen de le faire par programme? Nous n'essayons pas de modifier la boîte aux lettres locale ou Office 365 réelle de l'utilisateur.


Si l'adresse proxy de l'utilisateur, l'adresse principale ou d'autres e-mails sont définis si SSPR est activé, l'utilisateur sera invité à définir la méthode de récupération lors de la prochaine connexion. L'e-mail utilisé pour SSPR n'est PAS visible via une commande ADD powershell que je connais, même si l' article le dit. preuve


Vous pouvez définir un e-mail dans la section des méthodes d'authentification dans AAD, mais l'utilisateur devra toujours vérifier l'adresse .



0
votes

Le champ d'e-mail d'authentification et le téléphone d'authentification ne peuvent pas encore être définis dans PowerShell.

Plus de détails dans cet article de forums MSDN: https://social.msdn.microsoft.com/Forums/en-US/52c9b994-a41f-4072-8974-cbccd699dbd3/set-and-read-primary-email-through-powershell- getazureaduser? forum = WindowsAzureAD


0 commentaires

0
votes

La définition de l'adresse e-mail d'authentification d'un utilisateur est désormais possible via l'API bêta de Microsoft Graph. Voir ici pour plus de détails.

Actuellement, cela ne peut être effectué que via des autorisations déléguées dans votre application Azure AD. Un utilisateur doit donc s'authentifier avant d'effectuer des mises à jour.

Vous trouverez ci-dessous un exemple de code approximatif utilisant PowerShell. Notez que la plupart d'entre eux concernent l'obtention du jeton d'accès. Seules les 3 dernières lignes sont pertinentes pour l'ajout d'un e-mail d'authentification à l'utilisateur.

$AzureTenantId = <YourTenantId>
$AzureAppId = <YourAzureADApplicationId> #The application needs to have appropiate delagated permissions set
$UserName = 'exampleuser@test.com'
$UserAuthEmail = 'exampleuser@gmail.com'

#Get token by getting user to authenticate with a device code
$Resource = "https://graph.microsoft.com/"

$DeviceCodeRequestParams = @{
    Method = 'POST'
    Uri    = "https://login.microsoftonline.com/$AzureTenantId/oauth2/devicecode"
    Body   = @{
        client_id = $AzureAppId
        resource  = $Resource
    }
}
$DeviceCodeRequest = Invoke-RestMethod @DeviceCodeRequestParams

Write-Host "A browser window will launch in 5 seconds. Enter the code $($DeviceCodeRequest.user_code) to authenticate. You should just be able to paste it." -ForegroundColor Yellow
Set-Clipboard $DeviceCodeRequest.user_code
Start-Sleep -Seconds 5
Start $DeviceCodeRequest.verification_url

Pause

$TokenRequestParams = @{
    Method = 'POST'
    Uri    = "https://login.microsoftonline.com/$AzureTenantId/oauth2/token"
    Body   = @{
        grant_type = "urn:ietf:params:oauth:grant-type:device_code"
        code       = $DeviceCodeRequest.device_code
        client_id  = $AzureAppId
    }
}
$TokenRequest = Invoke-RestMethod @TokenRequestParams
$Token = $TokenRequest.access_token

#Set the email authentication
$Headers = @{Authorization = "Bearer $Token"}
$BodyJson = "{`"emailAddress`": `"$UserAuthEmail`"}"
Invoke-RestMethod "https://graph.microsoft.com/beta/users/$UserName/authentication/emailMethods" -Method POST -ContentType application/json -Headers $Headers -Body $BodyJson


0 commentaires