Setup Instructions π
Navigate to
Microsoft Entra
in the Azure portal hereIn the left bar, navigate to
Identity
>Applications
>App Registrations
3. Click the New Registration
button on the next page
4. Enter a name for the application, select Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)
, and provide a redirect URI (select Web
) then click Register
5. Skip API permissions for now, see Permissions section of this article below to update.
6. On the Overview page, grab the Application (client) ID
- this is the Oauth client ID
7. Click the Add a certificate or secret
link, then click New client secret
on the next page
8. Give the client secret a name and select an expiration time from the dropdown (default is fine)
9. Copy the new secret - this is the oauth client secret
Note that under the Authorization tab you should not tick the Access Tokens or ID Tokens boxes!
Permissions
How to add the required scopes
On the API Permissions
page click Add a permission
, then in the new panel click Microsoft Graph
On the next page of the panel, click Delegated permissions
and then select all 4 OpenId permissions (offline_access
, email
, openid
, and profile
). Then search for the User.Read
permission and add it. These 5 permissions are the mininum needed in order to be able to sign in with this Oauth application. Other permissions specific to individual APIs (such as Outlook or Teams) will be required as outlined at the end of this article.
Scopes to add
Microsoft provides a wide array of permissions spread across many possible APIs. We recommend selecting all of the scopes listed below for a given API for best compatibility with Caddi.
Items marked with a lock icon π indicate that a scope requires admin approval. This will only be necessary one time per scope, as the admin approval applies to the entire Oauth application, not just the user that requested it.
Teams
Member management
TeamMember.ReadWriteNonOwnerRole.All
π - add/remove members with non-owner roles
Activity management (IE notifications)
TeamsActivity.Read
- read activity feedTeamsActivity.Send
- send an activity
Chats/messages for 1:1 and groups
Chat.ReadWrite
- read and write user chat messages (1:1 and group, not channels)Chat.Create
- create chatsChatMember.ReadWrite
π - add and remove members from chats
Channels (separate from 1:1 and groups)
ChannelMessage.ReadWrite
π - read and write messages in channelsChannel.Create
π - create a new channelChannel.Delete.All
π - delete a channelChannel.ReadBasic.All
- read the names/descriptions of channels
Contacts
Contacts.ReadWrite
- full access to user contactsContacts.ReadWrite.Shared
- as above, but also for shared contacts
Calendars
Calendars.ReadWrite
- full access to user calendarsCalendars.ReadWrite.Shared
- and shared calendars
Meetings
OnlineMeetings.ReadWrite
- read and create meetingsOnlineMeetingTranscript.Read.All
π- read meeting transcripts
Schedule (not full calendar)
Schedule.ReadWrite.All
π- read and write schedule items
Files (upload/download files to chat)
Files.ReadWrite.All
- full access to userβs files including ones created by other users (that the current user has permissions to)
Users
User.Read.All
- read all information from all users (e.g. get the email of the person in the Teams chat so you can send them an email)
Outlook
Mail
MailboxFolder.ReadWrite
- read and write foldersMailboxItem.Read
- read mailbox itemsMail.ReadWrite
- create, read, update, and delete emails (not including sending)Mail.ReadWrite.Shared
- same, but also for shared mail/mail boxesMail.Send
- send emailsMail.Send.Shared
- same, but also for shared mail/mail boxes
Contacts
Contacts.ReadWrite
- manage contactsContacts.ReadWrite.Shared
- same, but also for shared contacts
OneNote
Notes.ReadWrite.All
- create, read, update, and delete notes and notebooks
SharePoint
Sites
Sites.ReadWrite.All
- edit/delete items in site collectionsSites.FullControl.All
π - full control of site collections
Files
Files.ReadWrite.All
Lists and ListItems
ListItems.SelectedOperations.Selected
- access selected listitemsLists.SelectedOperations.Selected
- access selected lists
OneDrive and O365
These APIs only support one scope:
Files.ReadWrite.All
- create, read, update, and delete files
Specific applications in the Office suite such as Word or Excel are not API-driven. Caddi Smart Tools will be used for these interactions.
Application and Permissions Approval/Consent Guidance
Azure Entra ID Permissions Configuration for Caddi
Quick Start Guide
This guide covers the essential permission configurations required for Caddi in Azure Entra ID at both the organization and application levels.
Organization-Level Permissions
Navigate to Entra ID β Enterprise Applications to configure the following:
1. Admin Consent Request Management
Path: Activity β Admin consent requests
βAction: Configure approval workflow for application access requests across your Azure organization.
2. User Consent Settings
Path: Security β Consent and permissions β User consent settings
βAction: Configure user consent controls.
β οΈ Important: If enforcing admin consent, do NOT select "Allow user consent for apps" - proceed to Admin consent settings instead.
3. Admin Consent Settings
Path: Security β Consent and permissions β Admin consent settings
βRequired Configuration:
Set "Users can request admin consent to apps they are unable to consent to" to Yes
Without this setting, users cannot access applications when admin consent is enforced
Additional Configuration:
Assign appropriate users/roles/groups as consent approvers (applies organization-wide)
App-specific approvers can be configured separately
4. Permission Classifications
Path: Security β Consent and permissions β Permission classifications
βAction: Verify that required permissions are not classified as high-risk, which could block consent prompts.
Application-Specific Permissions (Caddi)
Navigate to Entra ID β Enterprise Applications β [Caddi Application] to configure:
1. Application Properties
Path: Manage β Properties
βRequired Settings:
"Enabled for users to sign-in": Yes
"Assignment required?": Configure based on organizational requirements
2. Self-Service Access
Path: Manage β Self-service
βRequired Settings:
"Allow users to request access to this application?": Yes
"To which group should assigned users be added?": Create and assign a dedicated Caddi group
"Require approval before granting access to this application?": If Yes, ensure approvers are configured
"Default Access role": Standard configuration is sufficient
3. Application Permissions
Path: Security β Permissions
βOptional Action: Click "Grant admin consent for Caddi" to pre-approve permissions for all users
4. Access Reviews
Path: Activity β Access reviews
βAction: Monitor and audit user access and permission levels
General Recommendations for Standard Organizations
For organizations with standard security requirements, the following configuration provides a good balance of security and user convenience:
Recommended Settings
User consent settings: Allow user consent for apps from verified publishers
Assignment required?: Set to No for easier user onboarding
Self-service access: Enable with automatic approval (no approvers required)
Admin consent: Pre-grant admin consent for Caddi to eliminate permission prompts
Dedicated group: Optional - only create if you need to track or manage Caddi users specifically
Benefits of This Approach
Users can access Caddi immediately without waiting for approvals
Reduces administrative overhead
Maintains reasonable security through verified publisher requirements
Simplifies the user experience
Recommendations for Organizations with Strict Permission Controls
Essential Configuration
Enable admin consent requests in admin consent settings - without this, users cannot request access when admin consent is enforced
Create a dedicated Caddi user group for simplified access management and clear visibility
Test the consent workflow early with an end-user to ensure smooth deployment
Simplifying Access Management
Access to the application and permission consent are separate processes. To streamline administration:
Pre-approve application permissions (grant admin consent)
Require approval only for application access (group membership)
This approach allows admins to focus solely on group membership management
Critical Warning
β οΈ Incorrect configuration combinations will prevent user access. Test thoroughly with a basic-permission test account or actual end-user before widespread deployment to avoid access issues during onboarding.