Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: 
 Externa klienter (läs mer)
 Externa klienter (läs mer)
I den här självstudien lägger du till autentiserings- och auktoriseringselementen i en ASP.NET Core-webbapp. I den tidigare handledningenskapade du ett ASP.NET Core-projekt och konfigurerade det för autentisering.
I den här handledningen kommer du att:
- Lägga till auktoriserings- och autentiseringselement i koden
- Aktivera visning av anspråk i ett ID-token
- Lägg till inloggnings- och utloggningsfunktionerna
Förutsättningar
- Slutförande av förutsättningarna och stegen i Självstudie: Konfigurera en ASP.NET Core-webbapp som autentiserar användare.
Lägga till autentiserings- och auktoriseringselement
HomeController.cs- och Program.cs-filerna måste ändras för att lägga till autentiserings- och auktoriseringselementen i ASP.NET Core-webbappen. Detta inkluderar att hantera startsidan, lägga till rätt namnområden och konfigurera inloggning.
Lägg till auktorisering i HomeController.cs
Startsidan för programmet måste ha möjlighet att auktorisera användaren. 
              Microsoft.AspNetCore.Authorization-namnområdet innehåller klasser och gränssnitt för att implementera auktorisering till webbappen. Attributet [Authorize] används för att ange att endast autentiserade användare kan använda webbappen.
- Öppna Controllers/HomeController.csi webbappen och lägg till följande kodfragment överst i filen: - using System.Diagnostics; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using dotnetcore_webapp.Models;
- Lägg till attributet - [Authorize]ovanför- HomeController-klassdefinitionen, enligt följande kodfragment:- [Authorize] public class HomeController : Controller { ...
Lägga till autentiserings- och auktoriseringselement i Program.cs
Den Program.cs filen är startpunkten för programmet och måste ändras för att lägga till autentisering och auktorisering i webbappen. Tjänster måste läggas till för att appen ska kunna använda de inställningar som definierats i appsettings.json för autentisering.
- Lägg till följande namnområden överst i filen. - 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;
- Lägg sedan till autentiseringstjänsten för Microsoft Identity Web-appen, som konfigurerar appen så att den använder Microsoft Identity för autentisering. - // 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();
- Därefter måste mellanprogrammet konfigureras för att aktivera autentiseringsfunktionerna. Ersätt resten av koden med följande kodfragment. - 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();
Lägg till inloggnings- och utloggningsupplevelsen
Användargränssnittet måste uppdateras för att ge en mer användarvänlig upplevelse för inloggning och utloggning. Det här avsnittet visar hur du skapar en ny fil som visar navigeringselement baserat på användarens autentiseringsstatus. Koden läser ID-tokenanspråken för att kontrollera att användaren är autentiserad och använder User.Claims för att extrahera ID-tokenanspråk.
- Skapa en ny fil i Views/Shared och ge den namnet _LoginPartial.cshtml. 
- Öppna filen och lägg till följande kod för att lägga till inloggnings- och utloggningsupplevelsen: - @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>
- Öppna Views/Shared/_Layout.cshtml och lägg till en referens till - _LoginPartialsom skapades i föregående steg. Placera detta i slutet av klassen- navbar-navenligt följande kodfragment:- <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>
Använda anpassad URL-domän (valfritt)
              Gäller för:  Externa klienter (läs mer)
 Externa klienter (läs mer)
Använd en anpassad domän för att helt märka autentiserings-URL:en. Från ett användarperspektiv finns användarna kvar på din domän under autentiseringsprocessen, i stället för att omdirigeras till ciamlogin.com domännamn.
Följ dessa steg för att använda en anpassad domän:
- Använd stegen i Aktivera anpassade URL-domäner för appar i externa klienter för att aktivera anpassad URL-domän för din externa klientorganisation. 
- Öppna appsettings.json fil: - Uppdatera parametrarna InstanceochTenantIdtill enAuthorityegenskap.
- Lägg till följande sträng i värdet Authorityihttps://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. ErsättEnter_the_Custom_Domain_Heremed din anpassade URL-domän ochEnter_the_Tenant_ID_Heremed ditt klient-ID. Om du inte har ditt klient-ID, ta reda på hur du kan läsa klientinformationen.
- Lägg till en knownAuthorities-egenskap med värdet [Enter_the_Custom_Domain_Here].
 
- Uppdatera parametrarna 
När du har gjort ändringarna i din appsettings.json-fil, om din anpassade URL-domän är login.contoso.comoch klientorganisations-ID:t är aaaabbbb-0000-cccc-1111-dddd222eeee, bör filen se ut ungefär som följande kodfragment:
{
  "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"]
    ...