Entra External ID Tenants¶
PRO + ENTERPRISE Feature
Entra External ID tenant management requires a PRO or ENTERPRISE tier license.
Monitor and rotate App Registration credentials in Microsoft Entra External ID tenants. External ID is Microsoft's successor to Azure AD B2C, and CertifyClouds supports both tenant types side by side while you migrate.
Overview¶
CertifyClouds connects to an External ID tenant through a dedicated service principal and can:
- Discover App Registrations in the external tenant
- Inventory secrets and certificates with their expiry dates
- Rotate secrets and certificates
- Propagate rotated credentials to acknowledged Key Vault targets
- Send credential-expiry alerts, including owner-scoped alerts
External ID vs SSO
This feature is separate from SSO Setup. SSO authenticates users to CertifyClouds. External ID tenant management monitors the App Registrations used by your customer-facing applications.
Understanding External ID vs B2C¶
| Aspect | Azure AD B2C | Entra External ID external tenant |
|---|---|---|
| Purpose | Customer/consumer identity | Customer/consumer identity |
| Lifecycle | Closed to new customers | Microsoft's successor to B2C |
| App Registrations | Supported | Supported through the same Microsoft Graph surface |
| CertifyClouds support | Discovery, rotation, propagation, and alerts | The same discovery, rotation, propagation, and alerts |
You can register B2C and External ID tenants at the same time. This keeps credential monitoring and rotation available on both sides of a phased migration.
Migration tracking
CertifyClouds does not currently provide a migration-cockpit view or per-tenant migrated-state tracking. Tenant registration and credential operations are available side by side.
Prerequisites¶
Before configuring an External ID tenant:
- PRO or ENTERPRISE tier license
- Entra External ID external tenant to monitor
- Admin access in the external tenant to create an App Registration and client secret
- Permission to grant tenant-wide admin consent for Microsoft Graph application permissions
Required Information¶
| Item | Description | Example |
|---|---|---|
| External tenant ID | Directory (tenant) GUID | 12345678-abcd-1234-... |
| External tenant domain | Primary domain | yourcompany.onmicrosoft.com |
| Service principal client ID | App Registration created for CertifyClouds | abcd1234-... |
| Service principal secret | Client secret for that App Registration | secret_... |
Setup Steps¶
Step 1: Access the External Tenant¶
- Go to Azure Portal (portal.azure.com)
- Click your profile icon, then Switch directory
- Select the Entra External ID external tenant you want CertifyClouds to manage
- Confirm that the directory ID and primary domain match the values you plan to register
Step 2: Create the CertifyClouds Service Principal¶
Create the App Registration inside the external tenant, not your workforce or home tenant:
- Navigate to Microsoft Entra ID → App registrations
- Click + New registration
- Configure:
| Field | Value |
|---|---|
| Name | CertifyClouds External ID Workload - <Tenant Name> (Production) |
| Supported account types | Accounts in this organizational directory only |
| Redirect URI | Leave blank |
- Click Register
- Copy the Application (client) ID and Directory (tenant) ID
Step 3: Create a Client Secret¶
- Open Certificates & secrets on the new App Registration
- Click + New client secret
- Enter a description such as
CertifyClouds External ID Access - Choose an expiry that meets your security policy
- Click Add
- Copy the secret Value immediately; Azure will not display it again
Step 4: Grant Required Microsoft Graph Permissions¶
- Go to API permissions
- Click + Add a permission
- Select Microsoft Graph → Application permissions
- Add all three required permissions:
| Permission | Purpose |
|---|---|
Application.ReadWrite.All | Discover App Registrations and rotate their secrets and certificates |
Organization.Read.All | Test the connection and read tenant information |
User.Read.All | Resolve App Registration owners for owner-scoped expiry alerts |
- Click Grant admin consent for [Your External Tenant]
- Verify that all three permissions show granted admin consent
User.Read.All is required for owner alerts
Without User.Read.All, Microsoft Graph can return owner references without usable identity details. Discovery may still complete, but the resolved owner list is empty and owner-scoped expiry alerts are silently empty.
CertifyClouds Configuration¶
Step 1: Add the Tenant¶
- Go to Settings and open the external tenant registry
- Click Add Tenant
- Set Tenant kind to External ID
Step 2: Enter Details¶
| Field | Description |
|---|---|
| Tenant kind | Select External ID |
| Tenant ID | External tenant's directory GUID |
| Tenant domain | e.g., yourcompany.onmicrosoft.com |
| Display name | Friendly name, such as Production External ID |
| Environment | Development, Staging, or Production |
| Client ID | CertifyClouds service principal application ID |
| Client secret | CertifyClouds service principal secret |
Step 3: Configure Discovery¶
| Option | Description | Recommended |
|---|---|---|
| Auto-discover | Scan automatically | Enabled |
| Discovery interval | Scan frequency | 24 hours |
Step 4: Test and Register¶
- Click Test Connection
- Expected:
Connection successful - Found organization: [Tenant Name] - Click Register Tenant
Step 5: Run Discovery¶
- Click Discover on the tenant
- Open the tenant to view its discovered App Registration credentials
What Gets Discovered¶
For each App Registration credential in the External ID tenant:
| Item | Details |
|---|---|
| App name | App Registration display name |
| Client ID | Application ID |
| Secrets | Password credentials with expiry dates |
| Certificates | Key credentials with expiry dates |
| Owners | Resolved owners used for owner-scoped alerts |
| Expiry status | Expired, Expiring Soon (≤30 days), or Valid |
Discovery, Rotation, and Propagation¶
External ID tenants use the same CertifyClouds workflows as B2C tenants:
- Discovery inventories App Registration secrets and certificates
- You enable rotation for a credential and acknowledge its matched Key Vault targets
- CertifyClouds creates a new secret or certificate in the external tenant
- The new credential is written to every acknowledged Key Vault target
- The rotation result and Key Vault propagation status appear in rotation history
- Expiry rules continue to evaluate the discovered credentials and notify configured recipients
Both secret rotation and certificate rotation are supported. Key Vault targets remain in the corporate tenant and are updated through the existing propagation workflow.
Differences from Azure AD B2C¶
| Area | External ID behavior |
|---|---|
| Credential limit | External ID's organization-audience apps do not have B2C's two-credential limit for Microsoft-account-audience apps, so the B2C at-cap replacement path does not apply to them |
| Login domain | External ID does not use b2clogin.com; that domain is specific to B2C user flows |
| Trust framework | External ID has no B2C trust-framework keys or custom-policy keysets |
These differences do not change the standard CertifyClouds discovery, rotation, Key Vault propagation, or alert workflows described above.
Configuring Alerts¶
To notify teams about External ID credential expiry:
- Go to Settings → Alerts
- Create an Expiry rule for external-tenant credentials
- Set the warning threshold
- Configure email or webhook delivery
- For owner-scoped delivery, select application owners and confirm that the tenant service principal has
User.Read.Allwith admin consent
See Alerts for the full rule model.
Troubleshooting¶
Common Issues¶
| Issue | Cause | Solution |
|---|---|---|
| Connection failed | Invalid tenant ID, client ID, or secret | Verify the values came from the External ID tenant |
| Access denied during connection test | Missing Organization.Read.All or admin consent | Grant the permission as an application permission and grant admin consent |
| Discovery or rotation denied | Missing Application.ReadWrite.All or admin consent | Grant the permission and retry |
| Owner-scoped alerts have no recipients | Missing User.Read.All, missing admin consent, or no owners assigned | Grant the permission, confirm owners on the App Registration, then run discovery again |
| Target app not discovered | App is in a different directory | Confirm the App Registration exists in the registered external tenant |
Security Best Practices¶
- Use a dedicated service principal in each External ID tenant
- Grant only the documented application permissions and review admin consent regularly
- Rotate the service principal secret before it expires
- Monitor sign-in and audit logs in the external tenant
- Separate environments with distinct service principals where practical