<p>Bonjour,</p>
<p>Obtenir l’<strong>identifiant du locataire (Tenant ID)</strong> de votre compte Azure est une opération fréquente lors de la configuration d’applications, d’intégrations API ou de scripts d’automatisation. Il existe de nombreuses façons de le retrouver, que ce soit via le portail Azure, la ligne de commande ou par programmation. Je vais vous présenter toutes les méthodes disponibles.</p>
<h2><a name="p-34585-quest-ce-que-le-tenant-id-1" class="anchor" href="#p-34585-quest-ce-que-le-tenant-id-1" aria-label="Heading link"></a>Qu’est-ce que le Tenant ID ?</h2>
<p>Le <strong>Tenant ID</strong> (ou <strong>Directory ID</strong>) est un identifiant unique au format GUID (Globally Unique Identifier) qui identifie votre organisation dans <strong>Microsoft Entra ID</strong> (anciennement Azure Active Directory). Il se présente sous la forme :</p>
<pre><code class="lang-auto">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
</code></pre>
<p>Par exemple : <code>12345678-1234-1234-1234-123456789abc</code></p>
<p>Chaque organisation qui s’inscrit à Microsoft 365, Azure ou tout autre service Microsoft cloud se voit attribuer un tenant unique avec cet identifiant permanent.</p>
<h3><a name="p-34585-pourquoi-en-avez-vous-besoin-2" class="anchor" href="#p-34585-pourquoi-en-avez-vous-besoin-2" aria-label="Heading link"></a>Pourquoi en avez-vous besoin ?</h3>
<p>Le Tenant ID est requis dans de nombreux contextes :</p>
<ul>
<li><strong>Authentification OAuth 2.0 / OIDC</strong> : pour construire l’URL d’autorisation <code>https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize</code></li>
<li><strong>Azure CLI et PowerShell</strong> : pour se connecter à un tenant spécifique</li>
<li><strong>Configurations d’applications</strong> : dans les fichiers <code>appsettings.json</code>, <code>.env</code>, etc.</li>
<li><strong>Scripts d’administration</strong> : pour cibler le bon tenant dans des environnements multi-tenant</li>
<li><strong>Intégrations tierces</strong> : Salesforce, ServiceNow, outils DevOps, etc.</li>
</ul>
<h2><a name="p-34585-mthode-1-via-le-portail-azure-le-plus-simple-3" class="anchor" href="#p-34585-mthode-1-via-le-portail-azure-le-plus-simple-3" aria-label="Heading link"></a>Méthode 1 : Via le portail Azure (le plus simple)</h2>
<h3><a name="p-34585-option-a-depuis-les-proprits-microsoft-entra-id-4" class="anchor" href="#p-34585-option-a-depuis-les-proprits-microsoft-entra-id-4" aria-label="Heading link"></a>Option A : Depuis les propriétés Microsoft Entra ID</h3>
<ol>
<li>Connectez-vous au <strong>portail Azure</strong> : <a href="https://portal.azure.com">https://portal.azure.com</a></li>
<li>Dans la barre de recherche en haut, tapez <strong>“Microsoft Entra ID”</strong> (ou “Azure Active Directory”)</li>
<li>Dans le panneau de gauche, cliquez sur <strong>“Vue d’ensemble”</strong></li>
<li>Le <strong>Tenant ID</strong> est affiché dans la section “Informations de base” sous le nom <strong>“ID de locataire”</strong></li>
</ol>
<h3><a name="p-34585-option-b-depuis-les-proprits-de-labonnement-5" class="anchor" href="#p-34585-option-b-depuis-les-proprits-de-labonnement-5" aria-label="Heading link"></a>Option B : Depuis les propriétés de l’abonnement</h3>
<ol>
<li>Dans le portail Azure, allez dans <strong>“Abonnements”</strong></li>
<li>Cliquez sur votre abonnement</li>
<li>Dans la vue d’ensemble, le <strong>“ID du répertoire”</strong> correspond au Tenant ID</li>
</ol>
<h3><a name="p-34585-option-c-url-directe-6" class="anchor" href="#p-34585-option-c-url-directe-6" aria-label="Heading link"></a>Option C : URL directe</h3>
<p>Accédez directement à :</p>
<pre><code class="lang-auto">https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Overview
</code></pre>
<p>Le Tenant ID est visible dans les propriétés de base.</p>
<h2><a name="p-34585-mthode-2-via-azure-cli-7" class="anchor" href="#p-34585-mthode-2-via-azure-cli-7" aria-label="Heading link"></a>Méthode 2 : Via Azure CLI</h2>
<p>Azure CLI est la méthode la plus rapide en ligne de commande.</p>
<h3><a name="p-34585-obtenir-le-tenant-id-de-la-session-courante-8" class="anchor" href="#p-34585-obtenir-le-tenant-id-de-la-session-courante-8" aria-label="Heading link"></a>Obtenir le Tenant ID de la session courante</h3>
<pre data-code-wrap="bash"><code class="lang-bash"># Afficher les informations du compte connecté (inclut le tenant ID)
az account show --query tenantId --output tsv
Afficher toutes les informations du compte
az account show
Lister tous les tenants auxquels vous avez accès
az account tenant list --output table
</code></pre>
<h3><a name="p-34585-si-vous-avez-plusieurs-abonnements-9" class="anchor" href="#p-34585-si-vous-avez-plusieurs-abonnements-9" aria-label="Heading link"></a>Si vous avez plusieurs abonnements</h3>
<pre data-code-wrap="bash"><code class="lang-bash"># Lister tous les abonnements avec leur tenant ID associé
az account list --query "[].{Nom:name, AbonnementID:id, TenantID:tenantId, Etat:state}" --output table
Obtenir le tenant ID d'un abonnement spécifique
az account show --subscription "NomOuIDAbonnement" --query tenantId --output tsv
</code></pre>
<h3><a name="p-34585-se-connecter-un-tenant-spcifique-10" class="anchor" href="#p-34585-se-connecter-un-tenant-spcifique-10" aria-label="Heading link"></a>Se connecter à un tenant spécifique</h3>
<pre data-code-wrap="bash"><code class="lang-bash"># Connexion en spécifiant le tenant (utile en multi-tenant)
az login --tenant "votre-tenant-id-ou-domaine.onmicrosoft.com"
Vérification après connexion
az account show --query "{TenantID:tenantId, Nom:name}" --output json
</code></pre>
<h2><a name="p-34585-mthode-3-via-azure-powershell-11" class="anchor" href="#p-34585-mthode-3-via-azure-powershell-11" aria-label="Heading link"></a>Méthode 3 : Via Azure PowerShell</h2>
<pre data-code-wrap="powershell"><code class="lang-powershell"># Se connecter à Azure
Connect-AzAccount
Obtenir le Tenant ID de la session courante
(Get-AzContext).Tenant.Id
Ou avec plus de détails
Get-AzContext | Select-Object -ExpandProperty Tenant
Lister tous les tenants disponibles
Get-AzTenant | Select-Object Id, Name, Domains
Obtenir le Tenant ID pour un abonnement spécifique
Get-AzSubscription -SubscriptionName "NomAbonnement" | Select-Object TenantId
</code></pre>
<h3><a name="p-34585-script-powershell-complet-pour-inventaire-multi-tenant-12" class="anchor" href="#p-34585-script-powershell-complet-pour-inventaire-multi-tenant-12" aria-label="Heading link"></a>Script PowerShell complet pour inventaire multi-tenant</h3>
<pre data-code-wrap="powershell"><code class="lang-powershell"># Lister tous les abonnements et leurs tenants
Connect-AzAccount
$abonnements = Get-AzSubscription
foreach ($sub in $abonnements) {
Write-Output "Abonnement : $($sub.Name)"
Write-Output " ID Abonnement : $($sub.Id)"
Write-Output " Tenant ID : $($sub.TenantId)"
Write-Output " État : $($sub.State)"
Write-Output ""
}
</code></pre>
<h2><a name="p-34585-mthode-4-via-lapi-rest-azure-13" class="anchor" href="#p-34585-mthode-4-via-lapi-rest-azure-13" aria-label="Heading link"></a>Méthode 4 : Via l’API REST Azure</h2>
<p>Pour les cas où vous avez besoin d’obtenir le Tenant ID par programmation sans être authentifié au préalable, vous pouvez utiliser un endpoint public.</p>
<h3><a name="p-34585-endpoint-de-dcouverte-openid-connect-sans-authentification-14" class="anchor" href="#p-34585-endpoint-de-dcouverte-openid-connect-sans-authentification-14" aria-label="Heading link"></a>Endpoint de découverte OpenID Connect (sans authentification)</h3>
<pre data-code-wrap="bash"><code class="lang-bash"># Obtenir les métadonnées du tenant via le domaine
curl https://login.microsoftonline.com/VOTRE_DOMAINE.onmicrosoft.com/.well-known/openid-configuration | python3 -m json.tool | grep issuer
</code></pre>
<p>La réponse contient l’<code>issuer</code> au format <code>https://sts.windows.net/{tenant-id}/</code> dont vous pouvez extraire le Tenant ID.</p>
<h3><a name="p-34585-via-lapi-management-azure-authentifi-15" class="anchor" href="#p-34585-via-lapi-management-azure-authentifi-15" aria-label="Heading link"></a>Via l’API Management Azure (authentifié)</h3>
<pre data-code-wrap="bash"><code class="lang-bash"># Obtenir les détails du tenant via ARM API
curl -H "Authorization: Bearer $TOKEN" \
"https://management.azure.com/tenants?api-version=2020-01-01"
</code></pre>
<h2><a name="p-34585-mthode-5-dans-le-code-de-votre-application-16" class="anchor" href="#p-34585-mthode-5-dans-le-code-de-votre-application-16" aria-label="Heading link"></a>Méthode 5 : Dans le code de votre application</h2>
<h3><a name="p-34585-c-net-17" class="anchor" href="#p-34585-c-net-17" aria-label="Heading link"></a>C# / .NET</h3>
<pre data-code-wrap="csharp"><code class="lang-csharp">using Azure.Identity;
using Microsoft.Graph;
// Via MSAL
var credential = new DefaultAzureCredential();
var tokenRequestContext = new TokenRequestContext(new[] { "https://management.azure.com/.default" });
var accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Décoder le JWT pour extraire le tenant ID
// Le claim "tid" dans le token JWT contient le Tenant ID
// Via Microsoft Graph SDK
var graphClient = new GraphServiceClient(credential);
var organization = await graphClient.Organization.GetAsync();
var tenantId = organization?.Value?.FirstOrDefault()?.Id;
Console.WriteLine($"Tenant ID : {tenantId}");
</code></pre>
<h3><a name="p-34585-python-18" class="anchor" href="#p-34585-python-18" aria-label="Heading link"></a>Python</h3>
<pre data-code-wrap="python"><code class="lang-python">from azure.identity import DefaultAzureCredential
from msgraph import GraphServiceClient
Via Azure Identity
credential = DefaultAzureCredential()
Obtenir un token et extraire le tenant ID
import jwt
token = credential.get_token("https://management.azure.com/.default")
decoded = jwt.decode(token.token, options={"verify_signature": False})
tenant_id = decoded.get("tid")
print(f"Tenant ID : {tenant_id}")
</code></pre>
<h3><a name="p-34585-javascript-typescript-19" class="anchor" href="#p-34585-javascript-typescript-19" aria-label="Heading link"></a>JavaScript / TypeScript</h3>
<pre data-code-wrap="typescript"><code class="lang-typescript">import { DefaultAzureCredential } from "@azure/identity";
import { Client } from "@microsoft/microsoft-graph-client";
import { TokenCredentialAuthenticationProvider } from "@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials";
const credential = new DefaultAzureCredential();
const authProvider = new TokenCredentialAuthenticationProvider(credential, {
scopes: ["https://graph.microsoft.com/.default"]
});
const graphClient = Client.initWithMiddleware({ authProvider });
const org = await graphClient.api("/organization").get();
const tenantId = org.value[0].id;
console.log(Tenant ID : ${tenantId});
</code></pre>
<h2><a name="p-34585-mthode-6-via-une-url-spciale-du-portail-azure-20" class="anchor" href="#p-34585-mthode-6-via-une-url-spciale-du-portail-azure-20" aria-label="Heading link"></a>Méthode 6 : Via une URL spéciale du portail Azure</h2>
<p>Il existe une URL directe pour afficher les informations du tenant :</p>
<pre><code class="lang-auto">https://portal.azure.com/#settings/directory
</code></pre>
<p>Cette page affiche votre répertoire actif et son identifiant.</p>
<h2><a name="p-34585-trouver-le-tenant-id-sans-tre-administrateur-21" class="anchor" href="#p-34585-trouver-le-tenant-id-sans-tre-administrateur-21" aria-label="Heading link"></a>Trouver le Tenant ID sans être administrateur</h2>
<p>Si vous êtes un utilisateur simple (non-admin) et avez besoin du Tenant ID :</p>
<ol>
<li><strong>Via le portail Azure</strong> : connectez-vous et allez dans le profil en haut à droite > <strong>“Changer de répertoire”</strong> — les IDs des tenants sont affichés</li>
<li><strong>Via l’URL</strong> : après connexion, l’URL du portail Azure contient souvent le tenant ID</li>
<li><strong>Via un token</strong> : décodez un token d’accès JWT (sur <a href="https://jwt.ms">jwt.ms</a>) — le claim <code>tid</code> est le Tenant ID</li>
</ol>
<h2><a name="p-34585-tableau-rcapitulatif-des-mthodes-22" class="anchor" href="#p-34585-tableau-rcapitulatif-des-mthodes-22" aria-label="Heading link"></a>Tableau récapitulatif des méthodes</h2>
<div class="md-table">
<table>
<thead>
<tr>
<th>Méthode</th>
<th>Prérequis</th>
<th>Rapidité</th>
<th>Cas d’usage</th>
</tr>
</thead>
<tbody>
<tr>
<td>Portail Azure (Entra ID)</td>
<td>Accès navigateur</td>
<td>Rapide</td>
<td>Usage ponctuel</td>
</tr>
<tr>
<td>Azure CLI</td>
<td>Azure CLI installé</td>
<td>Très rapide</td>
<td>Scripts, CI/CD</td>
</tr>
<tr>
<td>PowerShell</td>
<td>Module Az installé</td>
<td>Très rapide</td>
<td>Scripts Windows</td>
</tr>
<tr>
<td>API REST</td>
<td>Token d’accès</td>
<td>Programmatique</td>
<td>Applications</td>
</tr>
<tr>
<td>OpenID Connect</td>
<td>Aucun (domaine connu)</td>
<td>Rapide</td>
<td>Découverte automatique</td>
</tr>
<tr>
<td>JWT decode</td>
<td>Token existant</td>
<td>Instantané</td>
<td>Debug, développement</td>
</tr>
</tbody>
</table>
</div><hr>
<p>La méthode la plus rapide au quotidien reste sans conteste <code>az account show --query tenantId --output tsv</code> pour les utilisateurs de la ligne de commande, et l’interface Entra ID du portail Azure pour une consultation visuelle.</p>
<p>Si vous rencontrez des difficultés à accéder à votre tenant ou si vous gérez un environnement multi-tenant, n’hésitez pas à préciser votre situation — je pourrai vous guider vers la méthode la plus adaptée à votre contexte.</p>