Aracılığıyla paylaş


Öğretici: Dış kiracıda kimlik doğrulaması için ASP.NET Core web uygulaması hazırlama

Bu öğretici, ASP.NET Core web uygulaması oluşturmayı ve Microsoft Entra yönetim merkezini kullanarak kimlik doğrulamasına hazırlamayı gösteren serinin 2. bölümüdür. Bu serinin 1. Bölümünde, bir uygulamayı kaydettiniz ve dış kiracınızda kullanıcı akışlarını yapılandırdınız. Bu öğreticide, ASP.NET Core web uygulamasının nasıl oluşturulacağı ve kimlik doğrulaması için nasıl yapılandıracağınız gösterilmektedir.

Bu öğreticide;

  • Visual Studio Code'da ASP.NET Core projesi oluşturma
  • Gerekli NuGet paketlerini ekleme
  • Uygulama ayarlarını yapılandırma
  • Kimlik doğrulamasını uygulamak için kod ekleme

Önkoşullar

ASP.NET Core projesi oluşturma

  1. Visual Studio Code'ı açın, Dosya>Klasör Aç... öğesini seçin. Adresine gidin ve projenizin oluşturulacağı konumu seçin.

  2. Terminal>Yeni Terminal'i seçerek yeni bir terminal açın.

  3. Model Görünüm Denetleyicisi (MVC) ASP.NET Core projesi yapmak için aşağıdaki komutu girin.

    dotnet new mvc -n dotnetcore_webapp
    

Kimlik paketlerini yükleme

Kullanıcıların kimliğini doğrulamak için projeye kimlikle ilgili NuGet paketleri yüklenmelidir.

  1. dotnetcore_webapp klasörüne geçmek ve ilgili NuGet paketini yüklemek için aşağıdaki komutları girin:

    cd dotnetcore_webapp
    dotnet add package Microsoft.Identity.Web.UI
    

Uygulamayı kimlik doğrulaması için yapılandırma

  1. appsettings.json dosyasını açın ve var olan kodu aşağıdaki kod parçacığıyla değiştirin.

    {
      "AzureAd": {
        "Authority": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/",
        "ClientId": "Enter_the_Application_Id_Here",
        "ClientCredentials": [
          {
            "SourceType": "ClientSecret",
            "ClientSecret": "Enter_the_Client_Secret_Here"
          }
        ],
        "CallbackPath": "/signin-oidc",
        "SignedOutCallbackPath": "/signout-callback-oidc"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    
    • Authority - Uygulama için kimlik sağlayıcısı örneği ve oturum açma hedef kitlesi. değerini dış kiracınızın alt etki alanıyla değiştirin Enter_the_Tenant_Subdomain_Here . Bunu bulmak için kenar çubuğu menüsünde Genel Bakış'ı seçin ve genel bakış sekmesine geçin. Birincil etki alanını caseyjensen.onmicrosoft.com biçiminde bulun. Alt etki alanı caseyjensen şeklindedir.
    • ClientId - İstemci olarak da adlandırılan uygulamanın tanımlayıcısı. Tırnak içindeki metni, kayıtlı uygulamanın genel bakış sayfasından daha önce kaydedilen Uygulama (istemci) Kimliği değeriyle değiştirin.
    • ClientSecret- Kiracınızı hazırlama bölümünde oluşturduğunuz istemci gizli dizisinin değeri. Tırnak içindeki metni Microsoft Entra yönetim merkezindeki gizli dizi değeriyle değiştirin.
    • CallbackPath - Sunucunun yanıtı uygun uygulamaya yönlendirmesine yardımcı olan bir tanımlayıcıdır.
  2. Dosyadaki değişiklikleri kaydedin.

  3. Özellikler/başlatma Ayarlar.json dosyasını açın.

  4. https bölümündeprofiles, url'sini applicationUrlhttps okuyacak https://localhost:7274şekilde değiştirin. Bu URL'yi Yeniden Yönlendirme URI'sini tanımlamak için kullandınız.

  5. Değişiklikleri dosyanıza kaydedin.

HomeController.cs yetkilendirme ekleme

HomeController.cs dosyası, uygulamanın giriş sayfasının kodunu içerir ve kullanıcıyı yetkilendirme özelliğine sahip olması gerekir. Ad Microsoft.AspNetCore.Authorization alanı, web uygulamasına yetkilendirme uygulamak için sınıfları ve arabirimleri sağlar ve [Authorize] özniteliği yalnızca kimliği doğrulanmış kullanıcıların web uygulamasını kullanabileceğini belirtmek için kullanılır.

  1. Kod düzenleyicinizde Controllers\HomeController.cs dosyasını açın.

  2. Yetkilendirmenin denetleyiciye eklenmesi gerekir; dosyanın üst kısmı aşağıdaki kod parçacığıyla aynı olacak şekilde ekleyin Microsoft.AspNetCore.Authorization :

    using System.Diagnostics;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc;
    using dotnetcore_webapp.Models;
    
  3. Ayrıca özniteliğini [Authorize] doğrudan sınıf tanımının HomeController üzerine ekleyin.

    [Authorize]
    

Program.cs kimlik doğrulaması ve yetkilendirme ekleme

web uygulamasına kimlik doğrulaması ve yetkilendirme eklemek için Program.cs değiştirilmesi gerekir. Bu, kimlik doğrulaması ve yetkilendirme için ad alanları eklemeyi ve kullanıcılara Microsoft kimlik platformu ile oturum açabilmeyi içerir.

  1. Gerekli ad alanlarını eklemek için Program.cs açın ve dosyanın en üstüne aşağıdaki kod parçacığını ekleyin:

    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;
    
  2. Ardından, web uygulamasının kullanıcıları Microsoft kimlik platformu ile oturum açmasını sağlayacak kimlik doğrulama hizmetlerini uygulamaya ekleyin. Program.cs kodun geri kalanını aşağıdaki kod parçacığıyla değiştirebilirsiniz:

    var builder = WebApplication.CreateBuilder(args);
    
    // 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.
    // For instance, 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' instead of 'roles' claim.
    // 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();
    
    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();
    
    

Sonraki adım