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.
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.
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 :
- Importez la classe
DefaultAzureCredential
du module@azure/identity
. - Créez un objet
DefaultAzureCredential
. - 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.