Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Locataires de main-d’œuvre
Locataires externes (en savoir plus)
Dans ce tutoriel, vous ajoutez les éléments d’authentification et d’autorisation à une application web core ASP.NET. Dans le tutoriel précédent, vous avez créé un projet ASP.NET Core et l’avez configuré pour l’authentification.
Dans ce tutoriel, vous allez :
- Ajouter des éléments d’autorisation et d’authentification au code
- Activer l’affichage des revendications dans un jeton d’ID
- Ajouter les expériences de connexion et de déconnexion
Conditions préalables
- Achèvement des prérequis et des étapes du didacticiel : configurer une application web ASP.NET Core qui authentifie les utilisateurs.
Ajouter des éléments d’authentification et d’autorisation
Les fichiers HomeController.cs et Program.cs doivent être modifiés pour ajouter les éléments d’authentification et d’autorisation à l’application web ASP.NET Core. Cela inclut la gestion de la page d’accueil, l’ajout d’espaces de noms corrects et la configuration de la connexion.
Ajouter une autorisation à HomeController.cs
La page d’accueil de l’application doit avoir la possibilité d’autoriser l’utilisateur. L’espace Microsoft.AspNetCore.Authorization
de noms fournit les classes et interfaces permettant d’implémenter l’autorisation pour l’application web. L’attribut [Authorize]
est utilisé pour spécifier que seuls les utilisateurs authentifiés peuvent utiliser l’application web.
Dans votre application web, ouvrez Controllers/HomeController.cs et ajoutez l’extrait de code suivant en haut du fichier :
using System.Diagnostics; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using dotnetcore_webapp.Models;
Ajoutez l’attribut
[Authorize]
au-dessus de laHomeController
définition de classe, comme indiqué dans l’extrait de code suivant :[Authorize] public class HomeController : Controller { ...
Ajouter des éléments d’authentification et d’autorisation à Program.cs
Le fichier Program.cs est le point d’entrée de l’application et doit être modifié pour ajouter l’authentification et l’autorisation à l’application web. Les services doivent être ajoutés pour permettre à l’application d’utiliser les paramètres définis dans appsettings.json pour l’authentification.
Ajoutez les espaces de nom suivants en haut du fichier.
using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using System.IdentityModel.Tokens.Jwt;
Ensuite, ajoutez le service d’authentification d’application web Microsoft Identity, qui configure l’application pour utiliser Microsoft Identity pour l’authentification.
// Add services to the container. builder.Services.AddControllersWithViews(); // This is required to be instantiated before the OpenIdConnectOptions starts getting configured. // By default, the claims mapping will map claim names in the old format to accommodate older SAML applications. // This flag ensures that the ClaimsIdentity claims collection will be built from the claims in the token JwtSecurityTokenHandler.DefaultMapInboundClaims = false; // Sign-in users with the Microsoft identity platform builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration) .EnableTokenAcquisitionToCallDownstreamApi() .AddInMemoryTokenCaches(); builder.Services.AddControllersWithViews(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
Ensuite, le middleware doit être configuré pour activer les fonctionnalités d’authentification. Remplacez le reste du code par l’extrait de code suivant.
var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
Ajouter l’expérience de connexion et de déconnexion
L’interface utilisateur doit être mise à jour pour fournir une expérience plus conviviale pour la connexion et la déconnexion. Cette section montre comment créer un fichier qui affiche des éléments de navigation en fonction de l’état d’authentification de l’utilisateur. Le code lit les revendications des jetons d'ID pour vérifier que l’utilisateur est authentifié et utilise User.Claims
pour extraire ces revendications.
Créez un fichier dans Views/Shared et attribuez-lui le nom _LoginPartial.cshtml.
Ouvrez le fichier et ajoutez le code suivant pour ajouter l’expérience de connexion et de déconnexion :
@using System.Security.Principal <ul class="navbar-nav"> @if (User.Identity is not null && User.Identity.IsAuthenticated) { <li class="nav-item"> <span class="nav-link text-dark">Hello @User.Claims.First(c => c.Type == "preferred_username").Value!</span> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a> </li> } else { <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a> </li> } </ul>
Ouvrez Views/Shared/_Layout.cshtml et ajoutez une référence à
_LoginPartial
créer à l’étape précédente. Placez ceci près de la fin de lanavbar-nav
classe, comme indiqué dans l’extrait de code suivant :<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> <ul class="navbar-nav flex-grow-1"> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a> </li> </ul> <partial name="_LoginPartial" /> </div>
Utiliser un domaine d’URL personnalisé (facultatif)
S’applique à : Locataires de main-d’œuvre
Locataires externes (en savoir plus)
Utilisez un domaine personnalisé pour personnaliser entièrement l’URL d’authentification. Du point de vue de l’utilisateur, les utilisateurs restent sur votre domaine pendant le processus d’authentification, au lieu d’être redirigés vers le nom de domaine ciamlogin.com .
Procédez comme suit pour utiliser un domaine personnalisé :
Utilisez les étapes décrites dans Activer les domaines d’URL personnalisés pour les applications dans les locataires externes afin d’activer le domaine d’URL personnalisé pour votre locataire externe.
Ouvrez appsettings.json fichier :
- Mettez à jour les paramètres
Instance
etTenantId
en une propriétéAuthority
. - Ajoutez la chaîne suivante à la valeur
Authority
dehttps://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here
. RemplacezEnter_the_Custom_Domain_Here
par votre domaine d’URL personnalisé etEnter_the_Tenant_ID_Here
par votre ID de locataire. Si vous n’avez pas votre identifiant de locataire, apprenez comment consulter les détails de votre locataire. - Ajoutez une
knownAuthorities
propriété avec une valeur [Enter_the_Custom_Domain_Here].
- Mettez à jour les paramètres
Après avoir apporté les modifications à votre fichier appsettings.json , si votre domaine d’URL personnalisé est login.contoso.com et que votre ID de locataire est aaaabbbb-0000-cccc-1111-dddd222eeee, votre fichier doit ressembler à l’extrait de code suivant :
{
"AzureAd": {
"Authority": "https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee",
"ClientId": "Enter_the_Application_Id_Here",
"ClientCertificates": [
{
"SourceType": "StoreWithThumbprint",
"CertificateStorePath": "CurrentUser/My",
"CertificateThumbprint": "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
}
],
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc",
"KnownAuthorities": ["login.contoso.com"]
...