Problembehandlung im Zusammenhang mit den Grenzwerten für konfigurierte Berechtigungen
Artikel
Die RequiredResourceAccess-Sammlung (RRA) für ein Anwendungsobjekt enthält alle konfigurierten API-Berechtigungen, die eine App für ihre Standardzustimmungsanforderung benötigt. Diese Sammlung hat verschiedene Grenzwerte, je nachdem, welche Identitätstypen die App unterstützt. Weitere Informationen zu den Grenzwerten verschiedener Kontotypen finden Sie unter Validierungsunterschiede nach unterstützten Kontotypen.
Die Grenzwerte für maximale Berechtigungen wurden im Mai 2022 aktualisiert, sodass einige Apps möglicherweise über mehr Berechtigungen in ihrer RRA verfügen, als jetzt zulässig sind. Darüber hinaus können Apps, für die die unterstützten Kontotypen nach dem Konfigurieren von Berechtigungen geändert werden, die Grenzwerte der neuen Einstellung überschreiten. Wenn Apps den Grenzwert für konfigurierte Berechtigungen überschreiten, können keine neuen Berechtigungen hinzugefügt werden, bis die Anzahl der Berechtigungen in der RequiredResourceAccess-Sammlung unter die Grenzwerte zurückgesetzt wird.
Dieses Dokument enthält zusätzliche Informationen und Schritte zur Problembehandlung, um dieses Problem zu beheben.
Identifizieren, wenn eine App die RequiredResourceAccess-Grenzwerte überschritten hat
Im Allgemeinen überschreiten alle Anwendungen mit mehr als 400 Berechtigungen die Konfigurationsgrenzwerte. Für Apps gelten möglicherweise auch niedrigere Grenzwerte, wenn sie zur Anmeldung persönliche Microsoft-Konten (MSA) unterstützen. Beim Versuch, einer App, die die Berechtigungsgrenzwerte überschritten hat, im Azure-Portal weitere Berechtigungen hinzuzufügen, wird die folgende Fehlermeldung angezeigt:
Failed to save permissions for <AppName>. This configuration exceeds the global application object limit. Remove some items and retry your request.
Lösungsschritte
Wenn die Anwendung nicht mehr benötigt wird, sollten Sie zunächst die vollständige Löschung der App-Registrierung in Betracht ziehen. (Sie können kürzlich gelöschte Anwendungen wiederherstellen, falls Sie kurz danach feststellen, dass sie doch noch benötigt werden.)
Wenn Sie die Anwendung weiterhin benötigen oder unsicher sind, helfen Ihnen die folgenden Schritte bei der Behebung dieses Problems:
Entfernen doppelter Berechtigungen. In einigen Fällen ist dieselbe Berechtigung mehrmals aufgeführt. Überprüfen Sie die erforderlichen Berechtigungen, und entfernen Sie Berechtigungen, die zwei Mal oder öfter aufgeführt sind. Das zugehörige PowerShell-Skript finden Sie im Abschnitt Zusätzliche Ressourcen in diesem Artikel.
Entfernen nicht verwendeter Berechtigungen. Überprüfen Sie die von der Anwendung erforderlichen Berechtigungen, und vergleichen Sie sie mit den Aufgaben der Anwendung oder des Diensts. Entfernen Sie Berechtigungen, die in der App-Registrierung konfiguriert sind, die von der Anwendung oder dem Dienst jedoch nicht benötigt werden. Weitere Informationen zum Überprüfen von Berechtigungen finden Sie unter Überprüfen von Anwendungsberechtigungen.
Entfernen redundanter Berechtigungen. In vielen APIs, einschließlich Microsoft Graph, sind einige Berechtigungen nicht erforderlich, wenn andere privilegiertere Berechtigungen vorhanden sind. Beispielsweise ist die Microsoft Graph-Berechtigung „User.Read.All“ (alle Benutzer lesen) nicht erforderlich, wenn eine Anwendung auch über „User.ReadWrite.All“ verfügt (alle Benutzer lesen, erstellen und aktualisieren). Mehr zu Microsoft Graph-Berechtigungen finden Sie in der Referenz zu Microsoft Graph-Berechtigungen.
Häufig gestellte Fragen (FAQ)
Warum hat Microsoft den Grenzwert für die Gesamtberechtigungen überarbeitet?
Dieser Grenzwert ist aus zwei Gründen wichtig:
Um zu verhindern, dass eine App so konfiguriert wird, dass sie mehr Berechtigungen erfordert, als während der Zustimmung erteilt werden können.
Um die Gesamtgröße der App-Registrierung innerhalb der für die zugrunde liegenden Speicherplattform erforderlichen Grenzwerte zu halten, die für Stabilität und Leistung sind.
Was geschieht, wenn ich nichts tue?
Wenn Ihre App den Grenzwert für die Gesamtanzahl von Berechtigungen überschreitet, können Sie die Gesamtzahl der erforderlichen Berechtigungen für Ihre Anwendung nicht mehr erhöhen.
Ändert der Grenzwert, wie viele Berechtigungen meiner Anwendung erteilt werden können?
Nein. Dieser Grenzwert wirkt sich nur auf die Liste der angeforderten API-Berechtigungen aus, die für die App-Registrierung konfiguriert werden. Dies unterscheidet sich von der Liste der Berechtigungen, die Ihrer Anwendung erteilt wurden.
Eine delegierte Berechtigung kann auch dann, wenn sie nicht in der Liste der erforderlichen API-Berechtigungen aufgeführt ist, dynamisch von einer Anwendung angefordert werden. Sowohl delegierte Berechtigungen als auch App-Rollen (Anwendungsberechtigungen) können auch direkt mit Microsoft Graph-API oder Microsoft Graph PowerShell erteilt werden.
Kann der Grenzwert für meine Anwendung erhöht werden?
Nein, der Grenzwert kann nicht für einzelne Anwendungen oder Organisationen erhöht werden.
Gibt es weitere Grenzwerte für die Liste der erforderlichen API-Berechtigungen?
Ja. Die Grenzwerte können je nach den unterstützten Kontotypen für die App variieren. Apps, die persönliche Microsoft Konten zur Anmeldung unterstützen (z. B. Outlook.com, Hotmail.com, Xbox Live), weisen in der Regel niedrigere Grenzwerte auf. Weitere Informationen finden Sie unter Validierungsunterschiede nach unterstützten Kontotypen.
Zusätzliche Ressourcen
Verwenden Sie das folgende PowerShell-Skript, um doppelte Berechtigungen aus Ihren App-Registrierungen zu entfernen.
PowerShell
<#
.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-MgContextif (-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 ($rrain$App.RequiredResourceAccess) {
if (-not$tempRras.ContainsKey($rra.ResourceAppId)) {
$tempRras[$rra.ResourceAppId] = @{"Scope" = @{}; "Role" = @{}};
}
foreach ($rain$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 - $deduplicatedCountif ($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))"
}
}
Veranschaulichen der Features von Microsoft Entra ID, um Identitätslösungen zu modernisieren sowie Hybridlösungen und Identitätsgovernance zu implementieren