App Registration Hygiene
The question it answers: Which app registrations of this tenant have no owner, risky redirect URIs, or accept sign-ins from any tenant without a verified publisher?
App registrations built in this tenant: which have nobody accountable for them, which send tokens to wildcard or unencrypted redirect URIs (token theft), and which accept sign-ins from any tenant without a verified publisher.
At a glance
Section titled “At a glance”| Where in the app | Entra ID › App & Workload Identities › App Registration Hygiene |
| Workload | Entra ID |
| Kind | Table |
| Data | Built from the tenant data IntensiveReports keeps in memory and refreshes in the background, so it opens at once. |
| Licence | No extra licence needed. |
| Report id (API and MCP) | entra.security.app-registration-hygiene |
Columns
Section titled “Columns”| Column | Key | Type |
|---|---|---|
| App | DisplayName | Link |
| Assessment | Severity | Status |
| Finding | Finding | Text |
| Owners | Detail | Text |
| Audience | Category | Text |
| Valid credentials | Value | Text |
| Created | Date | Date |
| App ID | Secondary | Text |
Filters
Section titled “Filters”| Filter | Key (API) | On when the page opens |
|---|---|---|
| Only apps with a finding | with-finding | Yes |
What it needs
Section titled “What it needs”Licence: No extra licence needed.
Application permissions on the IntensiveReports app registration (all permissions):
| Permission | API | What it allows | Note |
|---|---|---|---|
Application.Read.All | Microsoft Graph | Read all applications |
Data sources it reads
GET /v1.0/applications?$expand=owners
Through the API and MCP
Section titled “Through the API and MCP”GET /ir-api/v1/reports/entra.security.app-registration-hygiene?size=100GET /ir-api/v1/reports/entra.security.app-registration-hygiene?filter=with-findingAn AI assistant reads it with the MCP tool get_report and the id entra.security.app-registration-hygiene. The client needs the Read grant for Entra ID. See Using the API.