Permission Request System

The Permission Request system in AZExecute provides a formal approval workflow for managing internal API access, external API permissions, app roles, delegated scopes, and pre-authorized client access. It gives requesters a clear way to ask for access and gives owners and administrators an audit trail for approval decisions.


Why Use Permission Requests?

Permission requests solve several common challenges in application permission management:

Security Governance: API owners review and approve permission requests before granting access

Audit Trail: Complete history of who requested what access and when it was granted or denied

Justification Required: Requesters must explain why they need access, aiding in security decisions

Automated Notifications: Application owners are notified of pending requests via email

Reduced Admin Burden: Distributes permission management to application owners instead of central IT

Permission requests create a collaborative workflow between application developers (requesters) and API owners (approvers), ensuring least-privilege access is maintained.


Permission Requests from Application Requests

Permission Requests can be created directly by an application owner, or they can be created from API permissions included in an Application Request. This keeps API access review consistent no matter how the application was requested and prevents application creation from automatically granting unrelated API access.

• Internal API permissions are reviewed by the owners of the target application

• External API permissions are reviewed by an administrator and may require Entra ID consent

• Each request keeps its own justification, approval state, and audit history

• If the application request itself is created without approval, the related Permission Requests still remain pending until the right approver handles them

When an administrator approves an external API permission, AZExecute may apply the Azure change using that administrator's signed-in context. The approving administrator should have the required Entra ID roles and consent permissions for the approval to succeed.


Permission Target Model

A Permission Request always has a source application, a target API, and a grant type. The target determines who reviews the request and whether Entra ID consent may be required.

Internal APIs

• The target is another application managed in AZExecute

• The target application owners review whether the source application should receive access

• After approval, AZExecute applies the access where tenant setup and Entra ID permissions allow it

External APIs

• The target is an API outside the managed application list, such as Microsoft Graph or another public service principal

• Administrators review these requests because external APIs often require tenant-wide consent or elevated Entra ID permissions

• When external API permission approval applies an Azure change in the approving administrator's context, that administrator needs the required Entra ID role and consent permissions

Pre-Authorized Client Access

• Pre-authorization is intended for trusted client applications and internal API ownership scenarios

• Approvers should only approve it when the source application is trusted to bypass normal user consent prompts for the selected scopes

External API approval can depend on the administrator's active Entra ID role. Global Administrator, Application Administrator, or Cloud Application Administrator access may be required depending on the permission and tenant policy.


Request Types

The system supports three types of permission requests, each serving different access scenarios:

Application Permissions (App Roles)

Request application-level permissions that allow your app to act without a signed-in user.

Use When: Your background service needs to access an API automatically

Example: Requesting "User.Read.All" to synchronize user data from Microsoft Graph

Grant Process: After approval, AZExecute applies the permission where possible. Admin consent may still be required in Entra ID.


Delegated Permissions (OAuth2 Scopes)

Request delegated permissions that allow your app to act on behalf of signed-in users.

Use When: Your web or mobile app needs to access APIs while users are signed in

Example: Requesting "Mail.Send" to send emails on behalf of the signed-in user

Grant Process: After approval, AZExecute applies the delegated scope where possible. User or admin consent may still be required depending on the permission.


Pre-Authorized Client Access

Request to be added as a pre-authorized (trusted) client for specific API scopes.

Use When: You want to eliminate consent prompts for users accessing your API

Example: Requesting pre-authorization for "access_as_user" scope in a related first-party app

Grant Process: After approval, pre-authorization is configured in Entra ID

Target Model: Use for trusted internal or first-party API scenarios where the API owner controls the exposed scopes

Security Note: Pre-authorization requests require careful review as they bypass user consent. Only approve for applications you fully trust.


Creating a Permission Request

To request permissions for your application:

1. Navigate to your application's details page

2. Go to the Requests tab

3. Click Request Permission button

4. The request creation dialog opens

Create Permission Request
Request Creation Steps

Step 1: Select Target Application

• Search for the API application you need access to

• Use the autocomplete to filter by application name or ID

• Select the application from the dropdown

Step 2: Choose Permission Type

Application Permission: For background services and daemon apps

Delegated Permission: For user-interactive applications

Authorized Client: To be pre-authorized for specific scopes

Step 3: Select Specific Permissions

The system displays available permissions based on your selection:

• Browse the list of available permissions

• Use "Select All" to request multiple permissions at once

• Already-granted permissions are shown as disabled with status indicator

• Select only the permissions you actually need (principle of least privilege)

Create Permission Request

Smart Detection: The system automatically detects if a permission is already granted and prevents duplicate requests.

Step 4: Provide Justification

• Explain why you need these permissions (required field)

• Be specific about the use case and business requirement

• Good justification helps approvers make informed decisions

• Maximum 500 characters

Step 5: Review and Submit

• Review the request summary showing all selected permissions

• Verify the target application is correct

• Click Submit Request to send for approval

• Requests are created immediately and owners are notified

Request Summary

Managing Outgoing Requests

The Outgoing tab shows all permission requests your application has made to other applications:

Viewing Outgoing Requests

1. Navigate to the Requests tab

2. Ensure Outgoing sub-tab is selected

3. View all requests grouped by target application

4. Filter by status (Pending, Approved, Denied)

Outgoing Requests
Request Information Displayed

Target Application: Which API you're requesting access to

Permission Details: Name and value of requested permission

Grant Type: Application, Delegated, or Authorized Client

Request Date: When you submitted the request

Status: Pending, Approved, or Denied

Justification: Your explanation for needing the permission


Status Meanings

Pending

Waiting for target application owner to review and approve/deny

Approved

Owner approved the request - you may still need to grant consent in Entra ID

Denied

Owner denied the request - review denial reason and possibly resubmit with better justification

Note: Approved requests for Application and Delegated permissions require an additional step - an admin must grant consent in Entra ID. Pre-authorized client requests are configured automatically upon approval.


Managing Incoming Requests

If you're an application owner, you'll receive permission requests from other applications that want to access your API or be pre-authorized:

Viewing Incoming Requests

1. Navigate to your application's Requests tab

2. Select the Incoming sub-tab

3. View requests from other applications

4. Pending requests are highlighted for your attention

Incoming Requests
Request Details

Each incoming request shows:

Source Application: Which app is requesting access

Requester: Who submitted the request (name and email)

Permission Requested: Specific permission name and description

Grant Type: Application, Delegated, or Pre-Authorization

Justification: Why they need this access

Request Date: When it was submitted


Reviewing and Approving Requests

To process a pending request:

1. Click on the request to expand details

2. Review the justification and assess if access is appropriate

3. Consider the principle of least privilege - is this the minimum permission needed?

4. Click Approve to grant the request

5. For pre-authorization requests, approval automatically configures Entra ID

6. For application or delegated permissions, AZExecute applies the access where possible; user or administrator consent may still be required depending on the API and permission

7. For external API permissions, verify that the approving administrator has the required Entra ID role before approval

Approve Request
Denying Requests

If you need to deny a request:

1. Click Deny on the request

2. Provide a reason for denial (helpful for the requester)

3. Consider suggesting an alternative permission if appropriate

4. Requester is notified of the denial and your reason

Review Carefully: Before approving application permissions or pre-authorization, ensure you trust the requesting application. These grant broad access without individual user consent.


Notifications

The permission request system sends automated email notifications to keep all parties informed:

When Notifications are Sent

Request Submitted

Target application owners receive notification of new permission request

Request Approved

Requester receives confirmation with next steps (if consent required)

Request Denied

Requester receives notification with denial reason


Notification Content

Email notifications include:

• Application names (source and target)

• Requested permission details

• Justification provided

• Direct link to review or view request in AZExecute

• Next steps (for approvals)


After Approval: Applying Access

After a Permission Request is approved, AZExecute applies the requested access where the request type and tenant setup allow it. Some permissions, especially external API permissions, may require Entra ID consent before the access can be used.

For Application Permissions

1. The requested app role is added to the source application where possible

2. External APIs may require administrator consent in Entra ID

3. The approving administrator should have the required Entra ID role and consent permissions

4. If consent is not completed during approval, complete the consent step in Entra ID

5. If the Azure change fails because of missing administrator permissions, activate the required Entra ID role and retry the approval or consent step


For Delegated Permissions

1. The requested delegated scope is added to the source application where possible

2. User or administrator consent may still be required depending on the scope

3. If administrator consent is required, the approving administrator must have the right Entra ID permissions


For Pre-Authorized Clients

• No additional steps needed

• AZExecute automatically configures pre-authorization in Entra ID

• Client application can immediately access the scopes without consent prompts

Approval Context: External API approval can depend on the approving administrator's Azure permissions. If the approval cannot apply the Azure change, review the administrator's Entra ID role and consent permissions before retrying.


Best Practices

For Requesters

Request only what you need

Follow principle of least privilege - don't request broad permissions when narrow ones will work

Provide detailed justification

Explain specific use case, not just "needed for application to work"

Choose correct permission type

Use delegated permissions when users are involved, application permissions only for background services

Contact API owners if denied

Discuss concerns and possibly request alternative permissions


For Approvers

Review requests promptly

Pending requests block development work - try to respond within 24-48 hours

Verify justification makes sense

If unclear, ask requester for more details before approving

Be cautious with application permissions

These grant broad access without user context - ensure they're truly necessary

Only pre-authorize trusted applications

Pre-authorization bypasses consent - use only for first-party apps you control

Provide helpful denial reasons

Explain why denied and suggest alternatives if applicable

Periodically review granted permissions

Use the Grant Report to audit who has access and revoke if no longer needed

An unhandled error has occurred. Reload 🗙
An unhandled error has occurred. Reload 🗙