Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Koleksi RequiredResourceAccess
(RRA) pada objek aplikasi berisi semua izin API yang dikonfigurasi yang diperlukan aplikasi untuk permintaan persetujuan defaultnya. Koleksi ini memiliki berbagai batasan tergantung pada jenis identitas mana yang didukung aplikasi. Untuk informasi selengkapnya tentang batas untuk jenis akun yang didukung, lihat Perbedaan validasi berdasarkan jenis akun yang didukung.
Batas izin maksimum diperbarui pada Mei 2022, sehingga beberapa aplikasi mungkin memiliki lebih banyak izin di RRA mereka daripada yang sekarang diizinkan. Selain itu, aplikasi yang mengubah jenis akun yang didukung setelah mengonfigurasi izin dapat melebihi batas pengaturan baru. Saat aplikasi melebihi batas izin yang dikonfigurasi, tidak ada izin baru yang dapat ditambahkan hingga jumlah izin dalam RequiredResourceAccess
koleksi dibawa kembali di bawah batas.
Dokumen ini menawarkan informasi tambahan dan langkah-langkah pemecahan masalah untuk mengatasi masalah ini.
Mengidentifikasi kapan aplikasi telah melebihi RequiredResourceAccess
batas
Secara umum, semua aplikasi dengan lebih dari 400 izin telah melebihi batas konfigurasi. Aplikasi mungkin juga tunduk pada batas yang lebih rendah jika mendukung masuk untuk akun Microsoft pribadi (MSA). Aplikasi yang telah melebihi batas izin akan menerima kesalahan berikut saat mencoba menambahkan lebih banyak izin di portal Azure:
Failed to save permissions for <AppName>. This configuration exceeds the global application object limit. Remove some items and retry your request.
Langkah-langkah resolusi
Jika aplikasi tidak diperlukan lagi, opsi pertama yang harus Anda pertimbangkan adalah menghapus pendaftaran aplikasi sepenuhnya. (Anda dapat memulihkan aplikasi yang baru dihapus, jika Anda menemukan segera setelah itu bahwa aplikasi tersebut masih diperlukan.)
Jika Anda masih memerlukan aplikasi atau tidak yakin, langkah-langkah berikut akan membantu Anda mengatasi masalah ini:
- Hapus izin duplikat. Dalam beberapa kasus, izin yang sama tercantum beberapa kali. Tinjau izin yang diperlukan dan hapus izin yang tercantum dua kali atau lebih. Lihat skrip PowerShell terkait di bagian sumber daya tambahan di artikel ini.
- Hapus izin yang tidak digunakan. Tinjau izin yang diperlukan oleh aplikasi dan bandingkan dengan apa yang dilakukan aplikasi atau layanan. Hapus izin yang dikonfigurasi dalam pendaftaran aplikasi, tetapi yang tidak diperlukan aplikasi atau layanan. Untuk informasi selengkapnya tentang cara meninjau izin, lihat Meninjau izin aplikasi
- Hapus izin redundan. Di banyak API, termasuk Microsoft Graph, beberapa izin tidak diperlukan saat izin lain yang lebih istimewa disertakan. Misalnya, izin Microsoft Graph User.Read.All (membaca semua pengguna) tidak diperlukan saat aplikasi juga memiliki User.ReadWrite.All (membaca, membuat, dan memperbarui semua pengguna). Untuk mempelajari selengkapnya tentang izin Microsoft Graph, lihat Referensi izin Microsoft Graph.
Pertanyaan yang sering diajukan (FAQ)
Mengapa Microsoft merevisi batas total izin?
Batas ini penting karena dua alasan:
- Untuk membantu mencegah aplikasi dikonfigurasi agar memerlukan lebih banyak izin daripada yang dapat diberikan selama persetujuan.
- Untuk menjaga ukuran total pendaftaran aplikasi dalam batas yang diperlukan untuk stabilitas dan performa platform penyimpanan yang mendasar.
Apa yang akan terjadi jika saya tidak melakukan apa-apa?
Jika aplikasi Anda melebihi batas total izin, Anda tidak akan dapat lagi meningkatkan jumlah total izin yang diperlukan untuk aplikasi Anda.
Apakah batas mengubah berapa banyak izin yang dapat diberikan aplikasi saya?
Tidak. Batas ini hanya memengaruhi daftar izin API yang diminta yang dikonfigurasi pada pendaftaran aplikasi. Ini berbeda dari daftar izin yang telah diberikan ke aplikasi Anda.
Meskipun tidak tercantum dalam daftar izin API yang diperlukan, izin yang didelegasikan masih dapat diminta secara dinamis oleh aplikasi. Izin yang didelegasikan dan peran aplikasi (izin aplikasi) juga dapat diberikan secara langsung, menggunakan Microsoft Graph API atau Microsoft Graph PowerShell.
Dapatkah batas dinaikkan untuk aplikasi saya?
Tidak, batas tidak dapat dinaikkan untuk aplikasi atau organisasi individual.
Apakah ada batasan lain pada daftar izin API yang diperlukan?
Ya. Batas dapat bervariasi tergantung pada jenis akun yang didukung untuk aplikasi. Aplikasi yang mendukung Akun Microsoft pribadi untuk masuk (misalnya, Outlook.com, Hotmail.com, Xbox Live) umumnya memiliki batas yang lebih rendah. Lihat Perbedaan validasi dengan jenis akun yang didukung untuk mempelajari selengkapnya.
Sumber daya tambahan
Gunakan skrip PowerShell berikut untuk menghapus izin duplikat dari pendaftaran aplikasi Anda.
<#
.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))"
}
}
Pelajari Selengkapnya
- Pelajari tentang izin API dan platform identitas Microsoft: Gambaran umum izin dan persetujuan di platform identitas Microsoft
- Memahami izin yang tersedia untuk Microsoft Graph: Referensi izin Microsoft Graph
- Tinjau batasan konfigurasi aplikasi: Perbedaan validasi berdasarkan jenis akun yang didukung