Authentification utilisateur AD avec les Azure Fonctions

Peter KARDA
Publié par Peter KARDA
Catégorie : Azure / Azure Functions
28/01/2021

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.

 

Configuration de l’authentification Azure AD sur Azure Function App

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].

Setting up AAD authentication on Azure Function App

 

Configuration du fournisseur d’authentification Azure Active Directory

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.

Azure Active Directory Settings

 

Cliquez ensuite sur Save pour enregistrer la configuration.

Saving Function App authentication settings

 

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.

 

Configuration de l’authentification Azure Function

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.

Managing Azure Function

 

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.

Azure Functions Trigger

 

Dans le menu Authorization level, sélectionnez Anonymous et cliquez sur Save pour enregistrer la configuration du déclencheur.

Azure Function Authorization Level

 

Tout est maintenant prêt pour tester l’authentification AAD.

 

Test de l’authentification utilisateur 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.

Authenticating when calling Azure Function

 

Une fois l’utilisateur authentifié dans AD, la fonction Azure s’exécute et affiche le message d’accueil suivant :

AAD Authenticated request

 

Conclusion

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 :

  • apporte aux fonctions Azure un niveau de sécurité plus élevé ;
  • permet une authentification sécurisée sans clé d’API, ce qui peut s’avérer utile si vous avez besoin d’accéder à plusieurs fonctions Azure via un point de terminaison (endpoint) d’API Management.