Développement d’applications ASP.NET avec Azure Active Directory
par Rick Anderson
Microsoft ASP.NET tools for Azure Active Directory simplifie l’activation de l’authentification pour les applications web hébergées sur Azure. Vous pouvez utiliser l’authentification Azure pour authentifier Office 365 utilisateurs à partir de votre organization, des comptes d’entreprise synchronisés à partir de votre annuaire Active Directory local ou des utilisateurs créés dans votre propre domaine Azure Active Directory personnalisé. L’activation de l’authentification Windows Azure configure votre application pour authentifier les utilisateurs à l’aide d’un seul locataire Azure Active Directory .
Ce tutoriel vous montre comment créer une application ASP.NET configurée pour l’authentification avec Azure Active Directory (Azure AD). Vous allez également apprendre à appeler le API Graph pour obtenir des informations sur l’utilisateur actuellement connecté et comment déployer l’application sur Azure.
Prérequis
- Visual Studio Express 2013 pour web ou Visual Studio 2013.
- Visual Studio 2013 Update 4 : la mise à jour 3 ou une version ultérieure est requise.
- Un compte Azure. Cliquez ici pour un essai gratuit si vous n’avez pas encore de compte.
Ajouter un administrateur général à votre annuaire Active Directory
Connectez-vous au portail de gestion Azure.
Tous les comptes Azure contiennent un répertoire par défaut : cliquez dessus, puis cliquez sur l’onglet Utilisateurs en haut de la page (voir l’image ci-dessous).
Cliquez sur Ajouter un utilisateur.
Créez un utilisateur avec le rôle Administrateur général . Cliquez sur Utilisateurs dans le menu supérieur, puis cliquez sur le bouton Ajouter un utilisateur dans la barre de commandes.
Dans la boîte de dialogue Ajouter un utilisateur , entrez un nom pour le nouvel utilisateur, puis cliquez sur la flèche droite.
Entrez le nom d’utilisateur et définissez le rôle sur Administrateur général. Les administrateurs généraux ont besoin d’une autre adresse e-mail à des fins de récupération de mot de passe. Une fois que vous avez terminé, cliquez sur la flèche droite.
Dans la page suivante de la boîte de dialogue, cliquez sur Créer. Un mot de passe temporaire est créé pour le nouvel utilisateur et affiché dans la boîte de dialogue.
Enregistrez le mot de passe. Vous devrez modifier le mot de passe après la première connexion. L’image suivante montre le nouveau compte administrateur. Vous devez utiliser Azure Active Directory pour vous connecter à votre application, et non le compte Microsoft qui apparaît également sur cette page.
Créer une application ASP.NET
Les étapes suivantes utilisent Visual Studio Express 2013 pour le web et nécessitent Visual Studio 2013 Update 3.
Dans Visual Studio, cliquez sur Fichier , puis sur Nouveau projet. Dans la boîte de dialogue Nouveau projet , sélectionnez le projet web Visual C# dans le menu de gauche, puis cliquez sur OK. Vous pouvez également décocher la case Ajouter Application Insights à Project si vous ne souhaitez pas la fonctionnalité de votre application.
Dans la boîte de dialogue Nouveau projet ASP.NET , sélectionnez MVC, puis cliquez sur Modifier l’authentification.
Dans la boîte de dialogue Modifier l’authentification , sélectionnez Comptes d’organisation. Ces options peuvent être utilisées pour inscrire automatiquement votre application auprès d’Azure AD et configurer automatiquement votre application pour l’intégrer à Azure AD. Vous n’avez pas besoin d’utiliser la boîte de dialogue Modifier l’authentification pour inscrire et configurer votre application, mais cela facilite grandement la tâche. Si vous utilisez Visual Studio 2012 par exemple, vous pouvez toujours inscrire manuellement l’application dans le portail de gestion Azure et mettre à jour sa configuration pour l’intégrer à Azure AD. Dans les menus déroulants, sélectionnez Cloud - Organisation unique et Authentification unique Lire les données d’annuaire. Entrez le domaine de votre annuaire Azure AD, par exemple (dans les images ci-dessous) aricka0yahoo.onmicrosoft.com, puis cliquez sur OK. Vous pouvez obtenir le nom de domaine sous l’onglet Domaines de l’annuaire par défaut sur le portail Azure (voir l’image suivante).
L’image suivante montre le nom de domaine du Portail Azure.
Notes
Vous pouvez éventuellement configurer l’URI d’ID d’application qui sera inscrit dans Azure AD en cliquant sur Autres options. L’URI d’ID d’application est l’identificateur unique d’une application, qui est inscrite dans Azure AD et utilisée par l’application pour s’identifier elle-même lors de la communication avec Azure AD. Pour plus d’informations sur l’URI d’ID d’application et d’autres propriétés des applications inscrites, consultez cette rubrique. En cliquant sur la case à cocher sous le champ URI ID d’application, vous pouvez également choisir de remplacer une inscription existante dans Azure AD qui utilise le même URI d’ID d’application.
Après avoir cliqué sur OK, une boîte de dialogue de connexion s’affiche et vous devez vous connecter à l’aide d’un compte Administrateur général (et non du compte Microsoft associé à votre abonnement). Si vous avez créé un compte Administrateur précédemment, vous devez modifier le mot de passe, puis vous reconnecter à l’aide du nouveau mot de passe.
Une fois l’authentification réussie, la boîte de dialogue Nouveau projet ASP.NET affiche votre choix d’authentification (Organisation ) et le répertoire dans lequel la nouvelle application sera inscrite (aricka0yahoo.onmicrosoft.com dans l’image ci-dessous). Sous ces informations, cochez la case Hôte dans le cloud. Si cette case est cochée, le projet sera provisionné en tant qu’application web Azure et sera activé pour faciliter la publication ultérieurement. Cliquez sur OK.
La boîte de dialogue Configurer le site web Azure s’affiche, à l’aide d’un nom de site et d’une région générés automatiquement. Notez également le compte auquel vous êtes actuellement connecté dans la boîte de dialogue. Vous souhaitez vous assurer que ce compte est celui auquel votre abonnement Azure est attaché, généralement un compte Microsoft.
Notes
Ce projet nécessite une base de données. Vous devez sélectionner l’une de vos bases de données existantes ou en créer une nouvelle. Une base de données est requise, car le projet utilise déjà un fichier de base de données local pour stocker une petite quantité de données de configuration d’authentification. Lorsque vous déployez l’application sur un site web Azure, cette base de données n’est pas empaquetée avec le déploiement. Vous devez donc en choisir une qui est accessible dans le cloud. Cliquez sur OK.
Le projet sera créé et vos options d’authentification et d’application web seront automatiquement configurées avec le projet. Une fois ce processus terminé, exécutez le projet localement en appuyant sur ^F5. Vous devrez vous connecter à l’aide de votre compte professionnel. Indiquez le nom d’utilisateur et le mot de passe du compte que vous avez créé précédemment, puis cliquez sur Se connecter.
Une fois la connexion établie, le site ASP.NET indique que vous vous êtes authentifié en affichant le nom d’utilisateur dans le coin supérieur droit de la page.
Si vous obtenez l’erreur : La valeur ne peut pas être null ou vide. Nom du paramètre : linkText
consultez la section débogage à la fin du didacticiel.
Notions de base de la API Graph
Le API Graph est l’interface programmatique utilisée pour effectuer crud et d’autres opérations sur les objets de votre annuaire Azure AD. Si vous sélectionnez une option de compte d’organisation pour l’authentification lors de la création d’un projet dans Visual Studio 2013, votre application est déjà configurée pour appeler le API Graph. Cette section vous montre brièvement comment fonctionne le API Graph.
Dans votre application en cours d’exécution, cliquez sur le nom de l’utilisateur connecté en haut à droite de la page. Vous accédez alors à la page Profil utilisateur, qui est une action sur le contrôleur d’accueil. Vous remarquerez que la table contient des informations utilisateur sur le compte d’administrateur que vous avez créé précédemment. Ces informations sont stockées dans votre répertoire, et le API Graph est appelé pour récupérer ces informations lors du chargement de la page.
Retour à Visual Studio et développez le dossier Controllers, puis ouvrez le fichier HomeController.cs. Vous verrez une action UserProfile() qui contient du code pour récupérer un jeton, puis appeler le API Graph. Ce code est dupliqué ci-dessous :
[Authorize] public async Task UserProfile() { string tenantId = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value; // Get a token for calling the Azure Active Directory Graph AuthenticationContext authContext = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, LoginUrl, tenantId)); ClientCredential credential = new ClientCredential(AppPrincipalId, AppKey); AuthenticationResult assertionCredential = authContext.AcquireToken(GraphUrl, credential); string authHeader = assertionCredential.CreateAuthorizationHeader(); string requestUrl = String.Format( CultureInfo.InvariantCulture, GraphUserUrl, HttpUtility.UrlEncode(tenantId), HttpUtility.UrlEncode(User.Identity.Name)); HttpClient client = new HttpClient(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.TryAddWithoutValidation("Authorization", authHeader); HttpResponseMessage response = await client.SendAsync(request); string responseString = await response.Content.ReadAsStringAsync(); UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString); return View(profile); }
Pour appeler le API Graph, vous devez d’abord récupérer un jeton. Lorsque le jeton est récupéré, sa valeur de chaîne doit être ajoutée à l’en-tête Authorization pour toutes les requêtes suivantes à l’API Graph. La plupart du code ci-dessus gère les détails de l’authentification auprès d’Azure AD pour obtenir un jeton, en utilisant le jeton pour effectuer un appel à l’API Graph, puis en transformant la réponse afin qu’elle puisse être présentée dans la vue.
La partie la plus pertinente pour la discussion est la ligne mise en surbrillance suivante :
UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString);
. Cette ligne représente le nom de l’utilisateur, qui a été désérialisé à partir de la réponse JSON et est présenté dans la vue.Vous pouvez appeler le API Graph à l’aide de HttpClient et gérer les données brutes vous-même, mais un moyen plus simple consiste à utiliser la bibliothèque cliente Graph qui est disponible via NuGet. La bibliothèque cliente gère les requêtes HTTP brutes et la transformation des données retournées pour vous, et facilite considérablement l’utilisation des API Graph dans un environnement .NET. Consultez les exemples de code API Graph associés sur GitHub.
Déploiement de l'application vers Azure
Les étapes suivantes vous montrent comment déployer l’application sur Azure. Dans les étapes précédentes, vous avez connecté votre nouveau projet à une application web sur Azure, afin qu’il soit prêt à être publié en quelques étapes seulement.
Dans Visual Studio, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier. La boîte de dialogue Publier le web s’affiche avec chaque paramètre déjà configuré. Cliquez sur le bouton Suivant pour accéder à la page Paramètres . Vous serez peut-être invité à vous authentifier ; veillez à vous authentifier à l’aide de votre compte d’abonnement Azure (généralement un compte Microsoft) et non du compte d’organisation que vous avez créé précédemment.
Cochez l’option Activer l’authentification organisationnelle . Dans le champ Domaine , entrez le domaine de votre répertoire. Dans la liste déroulante Niveau d’accès, sélectionnez Authentification unique Lire les données d’annuaire. Vous remarquerez que la base de données précédente que vous avez utilisée est déjà renseignée dans la section Bases de données . Cliquez sur Publier.
Visual Studio commence à déployer votre site web, puis une nouvelle fenêtre de navigateur s’affiche. Vous serez peut-être invité à vous authentifier à nouveau auprès de votre annuaire. Une fois que vous vous êtes authentifié, vous êtes redirigé vers votre site web nouvellement publié sur Azure.
Débogage de l’application
Si vous obtenez l’erreur suivante : La valeur ne peut pas être null ou vide. Nom du paramètre : linkText
Remplacez le code dans le fichier Views\Shared\_LoginPartial.cshtml par ce qui suit :
@{
var user = "Null User";
if (!String.IsNullOrEmpty(User.Identity.Name))
{
user = User.Identity.Name;
}
}
@if (Request.IsAuthenticated)
{
<text>
<ul class="nav navbar-nav navbar-right">
<li>
@*@Html.ActionLink(User.Identity.Name, "UserProfile", "Home", routeValues: null, htmlAttributes: null)*@
@Html.ActionLink(user, "UserProfile", "Home", routeValues: null, htmlAttributes: null)
</li>
<li>
@Html.ActionLink("Sign out", "SignOut", "Account")
</li>
</ul>
</text>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Sign in", "Index", "Home", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}
Après avoir exécuté l’application, si l’utilisateur connecté affiche « Utilisateur Null », déconnectez-vous et reconnectez-vous avec le compte Active Directory que vous avez créé précédemment.
Un excellent tutoriel à suivre est Deep Dive de Rick Rainey : Sites web Azure et authentification organisationnelle à l’aide d’Azure AD.
Informations complémentaires
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour