Freigeben über


Einstellung der Microsoft Entra ID Graph-API

Der für Microsoft Entra ID (früher Azure Active Directory oder Azure AD) bereitgestellte Graph-API-Dienst wird eingestellt. Diese Abschaffung ist Teil eines umfassenderen Aufwands, um die Microsoft Entra ID-Plattform zu optimieren und das Entwicklererlebnis mit Microsoft Entra ID zu verbessern.

Schritte zur Problembehebung

Die Einstellung der Graph-API wirkt sich auf alle Azure Stack Hub-Kunden aus, die Entra ID als Identitätsanbieter verwenden. Es ist erforderlich, dass Sie das in diesem Artikel enthaltene Skript für alle betroffenen Anwendungen ausführen. Wenn Sie über Anwendungen verfügen, die weiterhin Zugriff auf die Graph-APIs benötigen, legt das Skript ein Flag fest, das diese Anwendungen für eine Erweiterung konfiguriert, mit der diese spezifischen Anwendungen weiterhin die ältere Graph-API aufrufen können.

Das in diesem Artikel bereitgestellte PowerShell-Skript legt ein Flag für jede Anwendung fest, um die Graph-API-Erweiterung für jeden Entra ID-Identitätsanbieter von Azure Stack Hub zu konfigurieren.

Um sicherzustellen, dass Ihre Azure Stack Hub-Umgebungen, die Entra ID als Identitätsanbieter verwenden, weiterhin funktionieren, sollten Sie dieses Skript bis Ende Februar 2025 ausführen.

Hinweis

Wenn Sie dieses Flag erst nach Februar 2025 hinzufügen, tritt bei der Authentifizierung ein Fehler auf. Anschließend können Sie dieses Skript ausführen, um sicherzustellen, dass Azure Stack Hub wie gewünscht funktioniert.

Ausführen des Skripts

Führen Sie das folgende PowerShell-Skript in Ihrer Entra-ID-Umgebung aus, das von Azure Stack Hub als Home directory (der Hauptidentitätsanbieter Ihres Azure Stack Hub) verwendet wird, sowie die Entra-ID-Umgebung, in der Sie Ihr Azure Stack Hub-System registriert haben. Dies kann ein anderes Verzeichnis als Ihr Startverzeichnis sein. Das Skript interagiert mit Azure, sodass Sie es nicht auf einem bestimmten Computer ausführen müssen. Sie benötigen jedoch mindestens Berechtigungen vom Typ Anwendungsadministrator im entsprechenden Entra ID-Mandanten, um das Skript auszuführen.

Führen Sie das folgende Skript unbedingt mit Administratorrechten auf dem lokalen Computer aus:

# 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
 
# Target your Azure Cloud instance name; use Get-MgEnvironment to list available clouds and Add-MgEnvironment to add new ones as needed for custom private/secure clouds
$envName = 'Global'

# 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 -Environment $envName -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 or registration in the current directory
$deploymentGuids = $applications.IdentifierUris |
    Where-Object { $_ -like 'https://management.*' -or $_ -like 'https://adminmanagement.*' -or $_ -like 'https://azurebridge*' } |
    ForEach-Object { "$_".Split('/')[3] } |
    Select-Object -Unique
Write-Host "Found '$($deploymentGuids.Count)' total Azure Stack deployments or registrations in directory '$tenantId'"
 
# Find all the Azure Stack application objects for each deployment or registration
$azureStackApplications = @()
foreach ($application in $applications)
{
    foreach ($deploymentGuid in $deploymentGuids)
    {
        if (($application.IdentifierUris -join '') -like "*$deploymentGuid*")
        {
            $azureStackApplications += $application
            break
        }
    }
}
 
# Find which Azure Stack applications require access to the legacy Graph Service
$azureStackLegacyGraphApplications = $azureStackApplications |
    Where-Object {
        ($_.RequiredResourceAccess.ResourceAppId -contains '00000002-0000-0000-c000-000000000000') -or
        ($_.IdentifierUris | Where-Object { $_ -like 'https://azurebridge*' }) }
 
# Find which of those applications need to have their authentication behaviors patched to allow access to legacy Graph
$azureStackLegacyGraphApplicationsToUpdate = $azureStackLegacyGraphApplications | Where-Object {
    $oldLocationSet = $false -eq $_.AdditionalProperties.authenticationBehaviors.blockAzureADGraphAccess
    $newLocationNotSet = $false -eq $_.AuthenticationBehaviors.BlockAzureAdGraphAccess
    return (-not $oldLocationSet -and -not $newLocationNotSet)
}
 
# Update the applications that 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 }
    }
}

Das Skript zeigt die folgende Beispielausgabe an:

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) 

Führen Sie das Skript ein zweites Mal aus, um zu überprüfen, ob alle Anwendungen aktualisiert wurden. Das Skript sollte die folgende Ausgabe zurückgeben, wenn alle Anwendungen erfolgreich aktualisiert wurden:

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 

Die folgende Ausgabe des Get-MgEnvironment Befehls zeigt die Standard-Cloudinstanzen an, die beim Installieren des Graph-Moduls enthalten sind:

C:\> Get-MgEnvironment

Name     AzureADEndpoint                   GraphEndpoint                           Type    
----     ---------------                   -------------                           ----    
USGovDoD https://login.microsoftonline.us  https://dod-graph.microsoft.us          Built-in
Germany  https://login.microsoftonline.de  https://graph.microsoft.de              Built-in
USGov    https://login.microsoftonline.us  https://graph.microsoft.us              Built-in
China    https://login.chinacloudapi.cn    https://microsoftgraph.chinacloudapi.cn Built-in
Global   https://login.microsoftonline.com https://graph.microsoft.com             Built-in

Nächste Schritte

Azure Stack Hub – Versionshinweise