Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kolekcja RequiredResourceAccess
(RRA) w obiekcie aplikacji zawiera wszystkie skonfigurowane uprawnienia interfejsu API wymagane przez aplikację dla domyślnego żądania zgody. Ta kolekcja ma różne limity w zależności od typów tożsamości, które obsługuje aplikacja. Aby uzyskać więcej informacji na temat limitów obsługiwanych typów kont, zobacz Różnice walidacji według obsługiwanych typów kont.
Limity maksymalnych uprawnień zostały zaktualizowane w maju 2022 r., więc niektóre aplikacje mogą mieć więcej uprawnień w swojej usłudze RRA niż są teraz dozwolone. Ponadto aplikacje, które zmieniają obsługiwane typy kont po skonfigurowaniu uprawnień, mogą przekroczyć limity nowego ustawienia. Gdy aplikacje przekroczą skonfigurowany limit uprawnień, nie można dodać nowych uprawnień, dopóki liczba uprawnień w RequiredResourceAccess
kolekcji nie zostanie przywrócona w ramach limitów.
Ten dokument zawiera dodatkowe informacje i kroki rozwiązywania problemów w celu rozwiązania tego problemu.
Identyfikowanie, kiedy aplikacja przekroczyła RequiredResourceAccess
limity
Ogólnie rzecz biorąc, wszystkie aplikacje z ponad 400 uprawnieniami przekroczyły limity konfiguracji. Aplikacje mogą również podlegać niższym limitom, jeśli obsługują logowanie na osobistych kontach Microsoft (MSA). Aplikacja, która przekroczyła limity uprawnień, zostanie wyświetlony następujący błąd podczas próby dodania większej liczby uprawnień w witrynie Azure Portal:
Failed to save permissions for <AppName>. This configuration exceeds the global application object limit. Remove some items and retry your request.
Kroki umożliwiające rozwiązanie problemów
Jeśli aplikacja nie jest już potrzebna, pierwszą opcją, którą należy rozważyć, jest całkowite usunięcie rejestracji aplikacji. (Możesz przywrócić ostatnio usunięte aplikacje, jeśli wkrótce potem zostanie odnalezione, że nadal będzie to potrzebne).
Jeśli nadal potrzebujesz aplikacji lub nie masz pewności, następujące kroki pomogą Ci rozwiązać ten problem:
- Usuń zduplikowane uprawnienia. W niektórych przypadkach to samo uprawnienie jest wyświetlane wiele razy. Przejrzyj wymagane uprawnienia i usuń uprawnienia, które są wyświetlane co najmniej dwa razy. Zapoznaj się z powiązanym skryptem programu PowerShell w sekcji dodatkowych zasobów tego artykułu.
- Usuń nieużywane uprawnienia. Przejrzyj uprawnienia wymagane przez aplikację i porównaj je z aplikacją lub usługą. Usuń uprawnienia skonfigurowane w rejestracji aplikacji, ale których aplikacja lub usługa nie wymaga. Aby uzyskać więcej informacji na temat przeglądania uprawnień, zobacz Przeglądanie uprawnień aplikacji
- Usuń nadmiarowe uprawnienia. W wielu interfejsach API, w tym w programie Microsoft Graph, niektóre uprawnienia nie są konieczne, gdy zostaną uwzględnione inne bardziej uprzywilejowane uprawnienia. Na przykład uprawnienie programu Microsoft Graph User.Read.All (odczyt wszystkich użytkowników) nie jest wymagane, gdy aplikacja ma również wartość User.ReadWrite.All (odczyt, tworzenie i aktualizowanie wszystkich użytkowników). Aby dowiedzieć się więcej o uprawnieniach programu Microsoft Graph, zobacz Dokumentacja uprawnień programu Microsoft Graph.
Często zadawane pytania
Dlaczego firma Microsoft zmieniła limit całkowitych uprawnień?
Ten limit jest ważny z dwóch powodów:
- Aby zapobiec skonfigurowaniu aplikacji w celu wymagania większej liczby uprawnień, niż można udzielić podczas wyrażania zgody.
- Aby zachować całkowity rozmiar rejestracji aplikacji w granicach wymaganych do stabilności i wydajności bazowej platformy magazynu.
Co się stanie, jeśli nic nie zrobię?
Jeśli aplikacja przekroczy łączny limit uprawnień, nie będzie już można zwiększyć całkowitej liczby wymaganych uprawnień dla aplikacji.
Czy limit zmienia liczbę uprawnień, które można przyznać mojej aplikacji?
L.p. Ten limit ma wpływ tylko na listę żądanych uprawnień interfejsu API skonfigurowanych podczas rejestracji aplikacji. Różni się to od listy uprawnień, które zostały przyznane aplikacji.
Nawet jeśli nie ma go na liście wymaganych uprawnień interfejsu API, delegowane uprawnienie może być nadal żądane dynamicznie przez aplikację. Uprawnienia delegowane i role aplikacji (uprawnienia aplikacji) można również udzielić bezpośrednio przy użyciu interfejsu API programu Microsoft Graph lub programu Microsoft Graph PowerShell.
Czy można podnieść limit dla mojej aplikacji?
Nie, nie można podnieść limitu dla poszczególnych aplikacji lub organizacji.
Czy istnieją inne limity na liście wymaganych uprawnień interfejsu API?
Tak. Limity mogą się różnić w zależności od obsługiwanych typów kont dla aplikacji. Aplikacje obsługujące osobiste konta Microsoft na potrzeby logowania (na przykład Outlook.com, Hotmail.com, Xbox Live) zwykle mają niższe limity. Aby dowiedzieć się więcej, zobacz Różnice walidacji według obsługiwanych typów kont.
Dodatkowe zasoby
Użyj następującego skryptu programu PowerShell, aby usunąć wszelkie zduplikowane uprawnienia z rejestracji aplikacji.
<#
.SYNOPSIS
Remove duplicate required API permissions from an app registration's required API permission list.
.DESCRIPTION
This script ensures all API permissions listed in a Microsoft identity platform's app registration are only listed once,
removing any duplicates it finds. This script requires the Microsoft.Graph.Applications PowerShell module.
.EXAMPLE
Get-MgApplication -Filter "appId eq '00001111-aaaa-2222-bbbb-3333cccc4444'" | .\Deduplicate_RequiredResourceAccess.ps1"
.EXAMPLE
$apps = Get-MgApplication -Filter "startswith(displayName,'Test_app')"
$apps | .\Deduplicate_RequiredResourceAccess.ps1
#>
#Requires -Modules Microsoft.Graph.Applications
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline = $true)]
$App
)
begin {
$context = Get-MgContext
if (-not $context) {
throw ("You must connect to Microsoft Graph PowerShell first, with sufficient permissions " +
"to manage Application objects. For example: Connect-MgGraph -Scopes ""Application.ReadWrite.All""")
}
}
process {
# Build the unique list of required API permissions for each required API
$originalCount = 0
$tempRras = @{}
foreach ($rra in $App.RequiredResourceAccess) {
if (-not $tempRras.ContainsKey($rra.ResourceAppId)) {
$tempRras[$rra.ResourceAppId] = @{"Scope" = @{}; "Role" = @{}};
}
foreach ($ra in $rra.ResourceAccess) {
if ($tempRras[$rra.ResourceAppId][$ra.Type].ContainsKey($ra.Id)) {
# Skip duplicate required API permission
} else {
$tempRras[$rra.ResourceAppId][$ra.Type][$ra.Id] = $true
}
$originalCount++
}
}
# Now that we have the unique set of required API permissions, iterate over all the keys to build the final requiredResourceAccess structure
$deduplicatedCount = 0
$finalRras = @($tempRras.Keys) | ForEach-Object {
$resourceAppId = $_
@{
"resourceAppId" = $resourceAppId
"resourceAccess" = @(@("Scope", "Role") | ForEach-Object {
$type = $_
$tempRras[$resourceAppId][$type].Keys | ForEach-Object {
$deduplicatedCount++;
@{"type" = $type; "id" = $_}
}
})
}
}
$countDifference = $originalCount - $deduplicatedCount
if ($countDifference) {
Write-Host "Removing $($countDifference) duplicate entries in RequiredResourceAccess for '$($App.DisplayName)' (AppId: $($App.AppId))"
Update-MgApplication -ApplicationId $App.Id -RequiredResourceAccess $finalRras
} else {
Write-Host "No updates necessary for '$($App.DisplayName)' (AppId: $($App.AppId))"
}
}
Dowiedz się więcej
- Dowiedz się więcej o uprawnieniach interfejsu API i Platforma tożsamości Microsoft: Omówienie uprawnień i zgody w Platforma tożsamości Microsoft
- Informacje o uprawnieniach dostępnych dla programu Microsoft Graph: dokumentacja uprawnień programu Microsoft Graph
- Zapoznaj się z ograniczeniami konfiguracji aplikacji: Różnice walidacji według obsługiwanych typów kont