Register a Microsoft Graph Application for Teams Meetings
A Teams meeting pipeline can read transcripts and recordings through Microsoft Graph without asking a user to sign in for every meeting. That app-only model requires a single-tenant Microsoft Entra application, admin-consented application permissions, and a deliberate user scope.
Grant only the required access
Create an app registration with no redirect URI, then record its tenant and client identifiers. Create a client secret whose expiry matches the organization's rotation policy; copy the secret value once and protect it. For transcript-first summaries, grant only the meeting metadata and transcript permissions. Add recording or outbound-message permissions only when those functions are actually enabled.
Application permissions can read across a tenant by default. In production, use a Teams Application Access Policy to restrict the app to approved meeting organizers. This policy is managed through MicrosoftTeams PowerShell and may take time to propagate.
Registration checklist
- Create a single-tenant Entra app registration.
- Leave redirect URI blank for app-only authentication.
- Copy the secret value, not its identifier.
- Add only required Microsoft Graph application permissions.
- Obtain tenant-admin consent.
- Restrict production access with an Application Access Policy.
- Schedule secret rotation before expiration.
Pitfalls
Delegated permissions do not satisfy a daemon flow. A token can be issued even when the later Graph call lacks required consent, so token acquisition alone is not end-to-end proof. Removing an old client secret before the new one is deployed creates an outage. Application Access Policies can take up to 30 minutes to propagate. Never print a bearer token or secret in a wiki, screenshot, or support report.
Verification steps
- Acquire a token using the configured tenant, client, and secret values without printing the token.
- Inspect token health and expected expiration only.
- Call the narrowest required Graph endpoint for one approved organizer.
- Confirm an unapproved organizer is denied after policy propagation.
- Create a second secret, switch the runtime, restart, and verify before deleting the old secret.
- Verify webhook and outbound-delivery permissions separately.
Follow the official Microsoft Graph application registration guide for current permission names, admin-consent steps, access-policy commands, and rotation guidance.
