Consent & Permissions
OAuth consent settings are one of the most commonly misconfigured areas of Entra ID. CONFIG365 enforces a consistent consent policy — blocking users from granting over-privileged access to third-party apps, and routing all risky requests through an admin approval workflow.
The OAuth Phishing Threat
OAuth phishing (also called consent phishing) tricks users into granting a malicious application access to their Microsoft 365 data — bypassing MFA entirely, because the attacker never needs the user's password.
Attack Flow (Without Protection)
Attacker registers a malicious OAuth app → Sends phishing email with "Sign in with Microsoft" link → User clicks, redirected to legitimate Microsoft consent page → App requests Mail.Read + Files.Read permissions → Without CONFIG365: user clicks "Accept" → attacker has mailbox access → With CONFIG365: consent blocked, request sent to admin → attacker stopped
CONFIG365 Defence
- • Unverified publisher apps are blocked at the consent page — users see a "Request access" dialog instead
- • Admin consent workflow routes all blocked requests to designated reviewers
- • Admins review the app, publisher, and requested permissions before approving
- • Attacker's malicious app is denied — no data access granted
Configuration Reference
Deployed via deployConsentPermissions pipeline toggle.
User Consent
Allowed (low-risk permissions only) Users may consent to verified publisher apps requesting permissions classified as Low risk. All other requests require admin approval.
Blocked Users cannot grant consent to applications whose publisher is not verified by Microsoft. Request routes to admin consent workflow.
Disabled Group owners cannot grant app access to group data on behalf of the group. All consent flows through the admin.
Admin Consent Workflow
Enabled When a user cannot grant consent, they are shown a request dialog. Their request is sent to designated reviewers for approval or denial.
Configured per-tenant One or more admins or groups are designated as reviewers. Reviewers receive email notifications for pending requests.
30 days Consent requests that are not acted on within 30 days expire automatically. Users receive notification to re-request if needed.
Weekly Reviewers receive weekly reminder emails for pending requests to prevent requests from going unnoticed.
Permission Classifications
User.Read, email, openid, profile, offline_access These permissions can be granted by users to verified apps. They expose minimal personal data and are safe for general self-service consent.
Require admin consent All permissions not explicitly classified as Low risk require admin approval before being granted — protecting sensitive data from over-privileged apps.
How It's Deployed
Consent settings are deployed via the Microsoft Graph API using the Configure-ConsentPermissions.ps1 script.
The script reads JSON definition files from the baseline repository and applies them using
Policy.ReadWrite.PermissionGrant Graph permissions.
Graph Endpoints Used
- GET/PATCH /policies/authorizationPolicy
- GET/PATCH /policies/adminConsentRequestPolicy
- GET/POST /permissionGrantPolicies
- GET/POST /policies/permissionGrantPreApprovalPolicies
Required Permissions
Policy.ReadWrite.PermissionGrantPolicy.Read.AllAppRoleAssignment.ReadWrite.All