Microsoft Entra ID Graph API uitfasering
De Microsoft Entra-id (voorheen Azure Active Directory of Azure AD) Graph API-service wordt buiten gebruik gesteld. Deze buitengebruikstelling maakt deel uit van een bredere inspanning om het Microsoft Entra ID-platform te stroomlijnen en de ontwikkelaarservaring van Microsoft Entra ID te verbeteren.
Beperkende maatregelen
De buitengebruikstelling van Graph API is van invloed op alle Azure Stack Hub-klanten die Entra-id gebruiken als id-provider. Hiervoor moet u het script uitvoeren dat in dit artikel is opgenomen voor alle betrokken toepassingen. Als u toepassingen hebt die nog steeds toegang nodig hebben tot de Graph-API's, stelt het script een vlag in waarmee deze toepassingen worden geconfigureerd voor een extensie waarmee deze specifieke toepassingen de verouderde Graph API tot juni 2025 kunnen blijven aanroepen.
Met het PowerShell-script in dit artikel wordt voor elke toepassing een vlag ingesteld voor het configureren van de Graph API-extensie voor elke Entra ID-id-provider van Azure Stack Hub.
Om ervoor te zorgen dat uw Azure Stack Hub-omgevingen die gebruikmaken van Entra ID als id-provider blijven functioneren, moet u dit script eind februari 2025 uitvoeren.
Notitie
Als u het toevoegen van deze vlag na februari 2025 uitstellen, mislukt de verificatie. U kunt dit script vervolgens uitvoeren om ervoor te zorgen dat uw Azure Stack Hub naar behoefte functioneert.
Het script uitvoeren
Voer het volgende PowerShell-script uit in uw Entra ID-omgeving die wordt gebruikt door Azure Stack Hub als de 'basismap' (de belangrijkste id-provider van uw Azure Stack Hub). Het script communiceert met Azure, dus u hoeft het niet uit te voeren op een specifieke computer. U hebt echter ten minste de bevoegdheden van de toepassingsbeheerder in de respectieve Entra ID-tenant nodig om het script uit te voeren.
Zorg ervoor dat u het volgende script uitvoert met beheerdersbevoegdheden op de lokale computer:
# Install the graph modules if necessary
#Install-Module Microsoft.Graph.Authentication
#Install-Module Microsoft.Graph.Applications
$ErrorActionPreference='Stop'
Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications
# Repeat this flow for each of your target directory tenants
$tenantId = 'MyTenantId'
# Sign-in with admin permissions to read and write all application objects
Connect-MgGraph -TenantId $tenantId -Scopes Application.ReadWrite.All
# Retrieve all applications in the current directory
Write-Host "Looking-up all applications in directory '$tenantId'..."
$applications = Get-MgApplication -All -Property id, displayName, appId, identifierUris, requiredResourceAccess, authenticationBehaviors
Write-Host "Found '$($applications.Count)' total applications in directory '$tenantId'"
# Find all the unique deployment guids, each one representing an Azure Stack deployment in the current directory
$deploymentGuids = $applications.IdentifierUris |
Where-Object { $_ -like 'https://management.*' -or $_ -like 'https://adminmanagement.*' } |
ForEach-Object { "$_".Split('/')[3] } |
Select-Object -Unique
Write-Host "Found '$($deploymentGuids.Count)' total Azure Stack deployments in directory '$tenantId'"
# Find all the Azure Stack application objects for each deployment
$azureStackApplications = @()
foreach ($application in $applications)
{
foreach ($deploymentGuid in $deploymentGuids)
{
if (($application.IdentifierUris -join '') -like "*$deploymentGuid*")
{
$azureStackApplications += $application
}
}
}
# Find which Azure Stack applications require access to Legacy Graph Service
$azureStackLegacyGraphApplications = $azureStackApplications |
Where-Object { $_.RequiredResourceAccess.ResourceAppId -contains '00000002-0000-0000-c000-000000000000' }
# Find which of those applications need to have their authentication behaviors patched to allow access to Legacy Graph
$azureStackLegacyGraphApplicationsToUpdate = $azureStackLegacyGraphApplications |
Where-Object { -not ($ab = $_.AdditionalProperties.authenticationBehaviors) -or -not $ab.ContainsKey(($key='blockAzureADGraphAccess')) -or $ab[$key] }
# Update the applications which require their authentication behaviors patched to allow access to Legacy Graph
Write-Host "Found '$($azureStackLegacyGraphApplicationsToUpdate.Count)' total Azure Stack applications which need permission to continue calling Legacy Microsoft Graph Service"
$count = 0
foreach ($application in $azureStackLegacyGraphApplicationsToUpdate)
{
$count++
Write-Host "$count/$($azureStackLegacyGraphApplicationsToUpdate.Count) - Updating application '$($application.DisplayName)' (appId=$($application.AppId)) (id=$($application.Id))"
Update-MgApplication -ApplicationId $application.Id -BodyParameter @{
authenticationBehaviors = @{ blockAzureADGraphAccess = $false }
}
}
In het script wordt de volgende voorbeelduitvoer weergegeven:
Looking-up all applications in directory '<ID>'...
Found '###' total applications in directory '<ID>'
Found '1' total Azure Stack deployments in directory '<app ID>'
Found '16' total Azure Stack applications which need permission to continue calling Legacy Microsoft Graph Service
1/16 - Updating application 'Azure Stack - AKS' (appId=<app ID>) (id=<ID>)
2/16 - Updating application 'Azure Stack - Hubs' (appId=<app ID>) (id=<ID>)
3/16 - Updating application 'Azure Stack - Portal Administration' (appId=<app ID>) (id=<app>)
4/16 - Updating application 'Azure Stack - RBAC Administration' (appId=<app ID>) (id=ID)
5/16 - Updating application 'Azure Stack - Container Registry' (appId=<app ID>) (id=ID)
6/16 - Updating application 'Azure Stack - RBAC' (appId=<app ID>) (id=ID)
7/16 - Updating application 'Azure Stack - Hubs Administration' (appId=<app ID>) (id=ID)
8/16 - Updating application 'Azure Stack - Deployment Provider' (appId=<app ID>) (id=ID)
9/16 - Updating application 'Azure Stack - Deployment' (appId=<app ID>) (id=ID)
10/16 - Updating application 'Azure Stack - KeyVault' (appId=<app ID>) (id=ID)
11/16 - Updating application 'Azure Stack' (appId=<app ID>) (id=ID)
12/16 - Updating application 'Azure Stack - Administration' (appId=<app ID>) (id=ID)
13/16 - Updating application 'Azure Stack - Policy Administration' (appId=<app ID>) (id=ID)
14/16 - Updating application 'Azure Stack - Policy' (appId=<app ID>) (id=ID)
15/16 - Updating application 'Azure Stack - Portal' (appId=<app ID>) (id=ID)
16/16 - Updating application 'Azure Stack - KeyVault Administration ' (appId=<app ID>) (id=ID)
Voer het script een tweede keer uit om te controleren of alle toepassingen zijn bijgewerkt. Het script moet de volgende uitvoer retourneren als alle toepassingen zijn bijgewerkt:
Looking-up all applications in directory '<ID>'...
Found '####' total applications in directory '<ID>>'
Found '1' total Azure Stack deployments in directory '<ID>>'
Found '0' total Azure Stack applications which need permission to continue calling Legacy Microsoft Graph Service