Udostępnij przez


Wycofanie interfejsu API programu Graph w usłudze Microsoft Entra ID

Identyfikator Microsoft Entra (dawniej Azure Active Directory lub Azure AD) usługa Graph API jest wycofywana. Wycofanie jest częścią szerszego wysiłku w celu uproszczenia platformy Microsoft Entra ID oraz poprawy doświadczenia programistycznego w Microsoft Entra ID.

Kroki łagodzące

Wycofanie interfejsu API programu Graph wpływa na wszystkich klientów usługi Azure Stack Hub korzystających z identyfikatora Entra jako dostawcy tożsamości i wymaga uruchomienia skryptu zawartego w tym artykule dla wszystkich aplikacji, których to dotyczy. Jeśli masz aplikacje, które wymagają dalszego dostępu do interfejsów API programu Graph, skrypt ustawia flagę, która konfiguruje te aplikacje dla rozszerzenia, które umożliwia tym konkretnym aplikacjom dalsze wywoływanie starszego interfejsu API programu Graph.

Skrypt PowerShell podany w tym artykule ustawia flagę dla każdej aplikacji, aby skonfigurować rozszerzenie interfejsu API usługi Graph dla każdego dostawcy tożsamości Entra ID w Azure Stack Hub.

Aby upewnić się, że środowiska usługi Azure Stack Hub używające identyfikatora Entra jako dostawcy tożsamości nadal działają, należy uruchomić ten skrypt do końca lutego 2025 r.

Notatka

Jeśli opóźnisz dodawanie tej flagi poza lutym 2025 r., uwierzytelnianie zakończy się niepowodzeniem. Następnie możesz uruchomić ten skrypt, aby upewnić się, że usługa Azure Stack Hub działa zgodnie z potrzebami.

Uruchamianie skryptu

Uruchom poniższy skrypt PowerShell w środowisku Entra ID, które jest używane przez Azure Stack Hub jako katalog domowy (główny dostawca tożsamości dla Azure Stack Hub), a także w środowisku Entra ID, do którego został zarejestrowany system Azure Stack Hub. Może to być inny katalog niż katalog macierzysny. Skrypt współdziała z platformą Azure, więc nie musisz uruchamiać go na określonej maszynie. Do uruchomienia skryptu potrzebne są jednak co najmniej uprawnienia administratora aplikacji w odpowiedniej dzierżawie Entra ID.

Pamiętaj, aby uruchomić następujący skrypt z uprawnieniami administratora na komputerze lokalnym:

# 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 }
    }
}

Skrypt wyświetla następujące przykładowe dane wyjściowe:

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) 

Uruchom skrypt po raz drugi, aby sprawdzić, czy wszystkie aplikacje zostały zaktualizowane. Skrypt powinien zwrócić następujące dane wyjściowe, jeśli wszystkie aplikacje zostały pomyślnie zaktualizowane:

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 

Następujące dane wyjściowe z Get-MgEnvironment polecenia pokazują domyślne wystąpienia chmury, które są uwzględniane podczas instalowania modułu Graph:

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

Następne kroki

Notatki o wydaniu Azure Stack Hub