Search K
Appearance
Appearance
Overview Use this guide to create and configure an Azure service account in MinuteView Console. This service account enables server-to-server integration with Microsoft Azure services including:
- Azure Active Directory for user authentication and authorization
- Azure Storage for file storage and blob operations
- Microsoft Graph for SharePoint, OneDrive, and Office 365 integration
- Azure Key Vault for secure credential management
- Azure Cognitive Services for AI and machine learning capabilities
- Azure SQL Database and other data services
This account uses application-only authentication with a client secret for automated, unattended operations — no user login is involved.
Which Azure account do I need?
- Microsoft Azure — this page — application-only, authenticates with a client secret.
- Microsoft Azure (Certificate) — application-only, authenticates with an X.509 certificate (no secret).
- Microsoft Azure (OAuth) — delegated; a user signs in and authorises access.
The Azure service account requires the MinuteView server to communicate directly with Microsoft's identity and API endpoints for token acquisition (both client credentials and OAuth authorization code flows) and for Microsoft Graph API calls. This means the MinuteView server must have outbound internet access to the following domains.
The following domains must be accessible via HTTPS (port 443) from the server where MinuteView is installed:
| Domain | Purpose |
|---|---|
login.microsoftonline.com | OAuth token exchange, token refresh, and client credentials authentication |
graph.microsoft.com | Microsoft Graph API calls (SharePoint, OneDrive, user profiles, etc.) |
Server Access Required
These domains must be reachable from the server, not just from the user's PC. For OAuth-based accounts, the user's browser handles the initial login redirect, but the token exchange and all subsequent API calls are made server-side. For client credentials accounts, all communication happens server-side. If the server cannot reach these domains, authentication will fail with a connection error.
MinuteView Service AccountFrom the app's Overview page, note:
12345678-1234-1234-1234-12345678901287654321-4321-4321-4321-210987654321MinuteView Service SecretPrefer a certificate?
For production, a certificate credential is often preferred over a secret (longer-lived, harder to leak). To use one, create a Microsoft Azure (Certificate) account instead — it is documented on its own page.
Navigate to API permissions → Add a permission → Microsoft Graph → Application permissions
Files.ReadWrite.All - Read/write all filesSites.ReadWrite.All - SharePoint site accessDirectory.Read.All - Read directory dataUser.Read.All - Read all user profilesGroup.Read.All - Read all groupsGroupMember.Read.All - Read group membershipsMail.ReadWrite - Access all mailboxesCalendars.ReadWrite - Access all calendarsFor Azure resource management:
user_impersonationAssign appropriate roles based on needs:
# Assign Storage Blob Data Contributor role
New-AzRoleAssignment -ObjectId "app-object-id" `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/subscription-id/resourceGroups/rg-name/providers/Microsoft.Storage/storageAccounts/storage-name"# Assign Key Vault Secrets Officer role
New-AzRoleAssignment -ObjectId "app-object-id" `
-RoleDefinitionName "Key Vault Secrets Officer" `
-Scope "/subscriptions/subscription-id/resourceGroups/rg-name/providers/Microsoft.KeyVault/vaults/vault-name"# Assign Reader role at subscription level
New-AzRoleAssignment -ObjectId "app-object-id" `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/subscription-id"Fill in the fields:
| Field | Description | Example |
|---|---|---|
| Name | A descriptive name | Azure-ServiceAccount-Prod |
| Service Account Type | Select Microsoft Azure from the dropdown | |
| Tenant Id | Directory (tenant) ID | 87654321-4321-4321-4321-210987654321 |
| Client Id | Application (client) ID | 12345678-1234-1234-1234-123456789012 |
| Client Secret | The secret value from step 2 | (sensitive) |
| Scope | Microsoft API scope — leave the default unless targeting a specific API | https://graph.microsoft.com/.default |
{
"storageAccount": "minuteviewstorage",
"containerName": "documents",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=...",
"useManagedIdentity": false,
"serviceAccountId": "azure-serviceaccount-prod"
}Access SharePoint sites and OneDrive:
GET https://graph.microsoft.com/v1.0/sites
Authorization: Bearer {access_token}Retrieve secrets securely:
GET https://vault-name.vault.azure.net/secrets/secret-name?api-version=7.0
Authorization: Bearer {access_token}Connection error / "Failed to retrieve authentication token"
AADSTS700016: Application not found
AADSTS7000215: Invalid client secret
Insufficient privileges
Access denied to resource
Name: Azure-Production-ServiceAccount
Type: Microsoft Azure
Client Id: 12345678-1234-1234-1234-123456789012
Tenant Id: 87654321-4321-4321-4321-210987654321
Client Secret: [secret-value]
Scope: https://graph.microsoft.com/.defaultName: Azure-Development-ServiceAccount
Type: Microsoft Azure
Client Id: 87654321-4321-4321-4321-210987654321
Tenant Id: 12345678-1234-1234-1234-123456789012
Client Secret: [secret-value]
Scope: https://graph.microsoft.com/.defaultFor certificate-based authentication instead of a client secret, see the Microsoft Azure (Certificate) service account.