Partager via


S'authentifier auprès des ressources Azure à partir d'applications JavaScript locales

Les applications exécutées en dehors d'Azure (par exemple sur site ou dans un centre de données tiers) doivent utiliser un principal de service d'application pour s'authentifier auprès d'Azure lorsqu'elles accèdent aux ressources Azure. Les objets principaux du service d’application sont créés à l’aide du processus d’inscription d’application dans Azure. Lorsqu'un principal de service d'application est créé, un ID client et un secret client sont générés pour votre application. Vous stockez l'ID client, le secret client et votre ID de locataire dans des variables d'environnement afin que le SDK Azure pour JavaScript utilise les variables d'environnement pour authentifier votre application auprès d'Azure au moment de l'exécution.

Un enregistrement d'application différent doit être créé pour chaque environnement (tel que test, stage, production) dans lequel l'application s'exécute. Cela permet de configurer des permissions de ressources spécifiques à l'environnement pour chaque principal de service et de s'assurer qu'une application déployée dans un environnement ne parle pas à des ressources Azure qui font partie d'un autre environnement.

1. Enregistrement de l'application dans Azure AD

Une application peut être inscrite auprès d’Azure à l’aide du Portail Azure ou d’Azure CLI.

Connectez-vous au portail Azure et suivez les étapes ci-dessous.

Instructions Capture d'écran
Dans le portail Azure :
  1. Entrez inscriptions d’applications dans la barre de recherche en haut du Portail Azure.
  2. Sélectionnez l’élément étiqueté Inscriptions d’applications sous le titre Services dans le menu qui apparaît sous la barre de recherche.
Capture d’écran montrant comment utiliser la barre de recherche supérieure dans le Portail Azure pour rechercher et accéder à la page Inscriptions d’applications.
Dans la page Inscriptions d’applications, sélectionnez + Nouvelle inscription. Capture d’écran montrant l’emplacement du bouton Nouvelle inscription dans la page inscriptions d'applications.
Dans la page Inscription d’une application, remplissez le formulaire comme suit :
  1. Nom → Entrez un nom pour l’inscription de l’application dans Azure. Il est recommandé d’inclure le nom de l’application et l’environnement (test, prod) pour lequel l’inscription de l’application est destinée.
  2. Types de comptes pris en chargeComptes dans cet annuaire organisationnel uniquement.
Sélectionnez Inscrire pour inscrire votre application et créer le principal du service d’application.
Une capture d'écran à remplir Enregistrez-vous en donnant un nom à l'application et en spécifiant les types de comptes pris en charge comme des comptes dans ce répertoire d'organisation uniquement.
Dans la page Inscription de l’application pour votre application :
  1. ID de l'application (client) → Il s'agit de l'ID de l'application que votre application utilisera pour accéder à Azure pendant le développement local. Copiez cette valeur dans un emplacement temporaire dans un éditeur de texte car vous en aurez besoin dans une étape ultérieure.
  2. Directory (tenant) ID → Cette valeur sera également nécessaire à votre application lorsqu'elle s'authentifiera auprès d'Azure. Copiez cette valeur dans un emplacement temporaire dans un éditeur de texte, car elle sera nécessaire à une étape ultérieure.
  3. Informations d’identification client → Vous devez définir les informations d’identification du client pour l’application avant que votre application puisse s’authentifier auprès d’Azure et utiliser les services Azure. Sélectionnez Ajouter un certificat ou un secret pour ajouter des informations d’identification pour votre application.
Capture d'écran de l'enregistrement de l'application une fois terminé. Cette capture d'écran montre les ID de l'application et du locataire, qui seront nécessaires dans une prochaine étape.
Dans la page Certificats et secrets, sélectionnez + Nouvelle clé secrète client. Capture d’écran montrant l’emplacement du lien à utiliser pour créer une clé secrète client sur la page certificats et secrets.
La boîte de dialogue Ajouter une clé secrète client s’affiche à droite de la page. Dans cette boîte de dialogue :
  1. Description → Entrez la valeur Current.
  2. Expire → Sélectionnez une valeur de 24 mois.
Sélectionnez Ajouter pour ajouter le secret.

IMPORTANT : Définissez un rappel dans votre calendrier avant la date d’expiration du secret. De cette façon, vous pouvez ajouter un nouveau secret avant et mettre à jour vos applications avant l’expiration de ce secret et éviter une interruption de service dans votre application.
Capture d’écran montrant la page où une nouvelle clé secrète client est ajoutée pour le principal du service d’application créé par le processus d’inscription de l’application.
La page Certificats & secrets indique la valeur du secret du client.

Copiez cette valeur dans un emplacement temporaire dans un éditeur de texte car vous en aurez besoin dans une prochaine étape.

IMPORTANT : c’est la seule fois que vous verrez cette valeur. Une fois que vous aurez quitté ou actualisé cette page, vous ne pourrez plus voir cette valeur. Vous pouvez ajouter un autre secret client sans invalider ce secret client, mais vous ne reverrez plus cette valeur.
Capture d’écran montrant la page avec la clé secrète client générée.

2 - Attribuer des rôles au principal du service d’application

Ensuite, vous devez déterminer les rôles (autorisations) dont votre application a besoin sur les ressources et affecter ces rôles à votre application. Les rôles peuvent se voir attribuer un rôle au niveau d’une ressource, d’un groupe de ressources ou d’une étendue d’abonnement. Cet exemple montre comment attribuer des rôles pour le principal de service dans l’étendue du groupe de ressources, car la plupart des applications regroupent toutes leurs ressources Azure dans un seul groupe de ressources.

Instructions Capture d'écran
Recherchez le groupe de ressources pour votre application en recherchant le nom du groupe de ressources à l’aide de la zone de recherche en haut du portail Azure.

Accédez à votre groupe de ressources en sélectionnant le nom du groupe de ressources sous le titre Groupes de ressources dans la boîte de dialogue.
Une capture d'écran montrant la boîte de recherche supérieure dans le portail Azure pour localiser et naviguer vers le groupe de ressources auquel vous souhaitez attribuer des rôles (permissions).
Dans la page du groupe de ressources, sélectionnez Contrôle d’accès (IAM) dans le menu de gauche. Capture d’écran de la page du groupe de ressources montrant l’emplacement de l’élément de menu Contrôle d’accès (IAM).
Dans la page Contrôle d’accès (IAM) :
  1. Sélectionnez l’onglet Attributions de rôles.
  2. Sélectionnez + Ajouter dans le menu supérieur, puis Ajouter une attribution de rôle dans le menu déroulant résultant.
Capture d’écran montrant comment accéder à l’onglet Attributions de rôles et à l’emplacement du bouton utilisé pour ajouter des attributions de rôles à un groupe de ressources.
La page Ajouter une attribution de rôle répertorie tous les rôles qui peuvent être attribués pour le groupe de ressources.
  1. Utilisez la zone de recherche pour filtrer la liste afin de la rendre plus facile à gérer. Cet exemple montre comment filtrer les rôles d’objets blob de stockage.
  2. Sélectionnez le rôle que vous voulez attribuer.
    Sélectionnez Suivant pour accéder à l’écran suivant.
Capture d’écran montrant comment filtrer et sélectionner des attributions de rôles à ajouter au groupe de ressources.
La page de rôle suivante Ajouter une attribution vous permet de spécifier l’utilisateur auquel attribuer le rôle.
  1. Sélectionnez Utilisateur, groupe ou principal de service sous Attribuer l’accès à.
  2. Sélectionnez + Sélectionner des membres sous Membres
Une boîte de dialogue s’ouvre sur le côté droit du Portail Azure.
Capture d’écran montrant la case d’option permettant d’attribuer un rôle à un groupe Microsoft Entra et le lien utilisé pour sélectionner le groupe auquel attribuer le rôle.
Dans la boîte de dialogue Sélectionner des membres :
  1. La zone de texte Sélectionner peut être utilisée pour filtrer la liste des utilisateurs et des groupes de votre abonnement. Si nécessaire, tapez les premiers caractères du principal de service que vous avez créé pour que l’application filtre la liste.
  2. Sélectionnez le principal de service associé à votre application.
Sélectionnez Sélectionner en bas de la boîte de dialogue pour continuer.
Capture d’écran montrant comment filtrer et sélectionner le groupe Microsoft Entra pour l’application dans la boîte de dialogue Sélectionner des membres.
Le directeur de service apparaît comme sélectionné dans l'écran Ajouter une attribution de rôle.

Sélectionnez Vérifier + affecter pour accéder à la page finale, puis Vérifier + attribuer à nouveau pour terminer le processus.
Capture d’écran montrant la page Ajouter une attribution de rôle terminée et l’emplacement du bouton Vérifier + attribuer utilisé pour terminer le processus.

3 - Configurer des variables d’environnement pour l’application

Vous devez définir les variables d'environnement AZURE_CLIENT_ID, AZURE_TENANT_ID et AZURE_CLIENT_SECRET pour le processus qui exécute votre application JavaScript afin que les informations d'identification principales du service d'application soient disponibles pour votre application au moment de l'exécution. L'objet DefaultAzureCredential recherche les informations relatives au principal du service dans ces variables d'environnement.

AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>

4 - Implémenter DefaultAzureCredential dans l’application

Pour authentifier les objets clients du SDK Azure auprès d'Azure, votre application doit utiliser la classe DefaultAzureCredential du package @azure/identity.

Tout d'abord, ajoutez le package @azure/identity à votre application.

npm install @azure/identity

Ensuite, pour tout code JavaScript qui crée un objet client Azure SDK dans votre application, vous devrez :

  1. Importez la classe DefaultAzureCredential du module @azure/identity.
  2. Créez un objet DefaultAzureCredential.
  3. Transmettez l'objet DefaultAzureCredential au constructeur de l'objet client du SDK Azure.

Un exemple de cela est illustré dans le segment de code suivant.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

Lorsque le code ci-dessus instancie l'objet DefaultAzureCredential, DefaultAzureCredential lit les variables d'environnement AZURE_SUBSCRIPTION_ID, AZURE_TENANT_ID, AZURE_CLIENT_ID et AZURE_CLIENT_SECRET pour obtenir les informations sur le principal du service d'application avec lequel se connecter à Azure.