Lorsque vous créez une fonction Azure, celle-ci est par défaut sécurisée par une clé d’API. Si vous devez appeler cette fonction, il vous suffit donc de joindre la clé d’API obtenue à la requête. La sécurisation par clé d’API fonctionne correctement dans la plupart des cas, mais qu’en est-il si vous avez besoin d’un accès à cette fonction Azure en fonction de l’utilisateur ?
Dans cet article, nous allons regarder comment activer l’authentification AAD (Azure Active Directory) sur Azure Function App pour autoriser un utilisateur (ou un groupe) à accéder aux fonctions en se connectant avec son compte AAD.
Pour notre démonstration, j’ai créé une Azure Function App appelée funauthdemo sur laquelle nous allons configurer l’authentification AAD.
Pour activer l’authentification AAD dans Function App, il faut d’abord sélectionner Authentication / Authorization [1], puis mettre App Service Authentication sur On [2]. Il faut ensuite définir ce que devra faire la fonction Azure lorsqu’elle recevra une requête non authentifiée. Dans le menu “Action to take when the request is not authenticated”, sélectionnez “Log in with Azure Active Directory” [3].
Comme nous souhaitons utiliser l’authentification AAD, il nous faut configurer le fournisseur d’authentification adéquat. Dans la liste, sélectionnez le fournisseur “Azure Active Directory” [4].
Il y a deux façons de paramétrer l’authentification Active Directory : Express et Advanced. Pour notre exemple, nous allons choisir le mode Express. Si on préfère utiliser le mode Advanced, il faudra indiquer le ClientID (que l’on peut trouver dans le panneau App Registration) et l’URL de l’émetteur (issuer URL : https://sts.windows.net/<your_tenant_ID>).
Pour enregistrer notre Function App dans Active Directory, nous pouvons choisir soit d’en créer une nouvelle (Create a new Azure AD App) soit d’en réutiliser une (Select Existing AD App). Il peut être utile de partir de l’application existante si on veut réutiliser la même configuration d’identité AD (par exemple la même liste d’utilisateurs autorisés) que l’application déjà enregistrée dans Active Directory. Pour notre exemple, nous allons en créer une nouvelle (Create New AD App) et l’appeler funauthdemo.
Une fois renseignées toutes les informations, cliquez sur OK pour confirmer.
Cliquez ensuite sur Save pour enregistrer la configuration.
Une fois enregistrés les paramètres d’authentification et d’autorisation, le principal de service est créé dans Azure Active Directory. Notre Function App est maintenant enregistrée dans AAD et nous sommes en mesure d’effectuer l’authentification via Active Directory.
On peut trouver plus de détails sur cet enregistrement Active Directory (par exemple le ClientID, les jetons d’authentification, l’attribution d’utilisateur, etc.) dans les panneaux Application Registration et Enterprise Application d’Azure Portal.
Nous allons maintenant créer une fonction Azure pour la Function App. J’ai créé une fonction simple GetGreeting basée sur un déclencheur (trigger) HTTP. La fonction renvoie le message d’accueil (greeting) si nous lui fournissons une valeur pour son paramètre name.
Comme nous l’avons précisé plus haut, par défaut, les fonctions Azure sont protégées par une clé d’API. Nous ne voulons cependant pas utiliser de clé d’API mais plutôt l’authentification Active Directory que nous venons justement d’activer sur la Function App. Pour enlever la sécurisation par clé d’API dans la fonction Azure, nous devons faire passer son niveau d’autorisation (Authorization Level) de Function à Anonymous.
Dans la Function App funauthdemo, cliquez sur Functions puis ouvrez la fonction GetGreeting.
Cliquez ensuite sur Integration pour afficher le déclencheur (Trigger) de la fonction et son flux. Cliquez sur HTTP (req) pour ouvrir les propriétés du déclencheur.
Dans le menu Authorization level, sélectionnez Anonymous et cliquez sur Save pour enregistrer la configuration du déclencheur.
Tout est maintenant prêt pour tester l’authentification AAD.
Il nous faut tout d’abord l’URL de la fonction. Sélectionnez Code + Test dans le menu développeur puis Get function URL (l’URL devrait ressembler à https://votre-function-app.azurewebsites.net/api/GetGreeting?name=Luke). Ouvrez une fenêtre privée dans un navigateur et collez l’URL de la fonction. Vous êtes alors invité à fournir les informations pour l’identification AAD.
Une fois l’utilisateur authentifié dans AD, la fonction Azure s’exécute et affiche le message d’accueil suivant :
Nous avons vu dans cet article que la configuration de l’authentification utilisateur AD sur la fonction Azure est assez simple et que l’authentification :