Aracılığıyla paylaş


Korumalı ASP.NET Core web API'lerini test edin

Şunlar için geçerlidir: Aşağıdaki içeriğin iş gücü kiracıları için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. İş gücü kiracıları Aşağıdaki içeriğin dış kiracılar için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu öğretici, bir Microsoft Entra kiracısında kayıtlı korumalı bir web API'sini oluşturmayı ve test etme işlemini gösteren serinin son bölümüdür. Bu serinin Bölüm 1'inde, bir ASP.NET Core web API'si oluşturdunuz ve uç noktalarını korudunuz. Şimdi basit bir daemon uygulaması oluşturacak, kiracınıza kaydedecek ve oluşturduğunuz web API'sini test etmek için daemon uygulamasını kullanacaksınız.

Bu öğreticide şunları yapacaksınız:

  • Daemon uygulaması kaydet
  • Daemon uygulamanıza uygulama rolü atama
  • Daemon uygulamanızı oluşturma
  • Korumalı web API'sini çağırmak için daemon uygulamanızı çalıştırın

Önkoşullar

Daemon uygulamasını kaydetme

Aşağıdaki adımlar, daemon uygulamanızı Microsoft Entra yönetim merkezine nasıl kaydedeceğini gösterir:

  1. Microsoft Entra yönetim merkezinde en azından Uygulama Geliştiricisi olarak oturum açın.

  2. Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden dış kiracınıza geçmek için üst menüdeki Ayarlar simgesini kullanın.

  3. Entra ID>Uygulama kayıtları bölümüne gidin.

  4. + Yeni kayıt'ı seçin.

  5. Görüntülenen Uygulamayı kaydet sayfasında , uygulamanızın kayıt bilgilerini girin:

    1. Ad bölümünde, uygulamanın kullanıcılarına görüntülenecek anlamlı bir uygulama adı girin, örneğin ciam-client-app.

    2. Desteklenen hesap türleri'nin altında Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin.

  6. Kayıt Ol'u seçin.

  7. Kayıt tamamlandığında uygulamanın Genel Bakış bölmesi görüntülenir. Uygulama kaynak kodunuzda kullanılacak Dizin (kiracı) kimliğini ve Uygulama (istemci) kimliğini kaydedin.

Kayıtlı uygulama için bir istemci sırrı oluşturun. Uygulama, jeton talebinde bulunduğunda kimliğini kanıtlamak için istemci sırrını kullanır.

  1. Uygulama kayıtları sayfasında, oluşturduğunuz uygulamayı (web uygulaması istemci gizli dizisi gibi) seçerek Genel Bakış sayfasını açın.
  2. Yönet altında Sertifikalar ve gizliler>İstemci gizlileri>Yeni istemci gizlisi seçin.
  3. Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, web uygulaması istemci gizli dizisi).
  4. "Expires altında, gizli anahtarın geçerli olacağı süreyi (kuruluşunuzun güvenlik kurallarına göre) seçin ve ardından Ekle'yi seçin."
  5. Gizli bilgilerin Değerini kaydedin. Bu değeri sonraki bir adımda yapılandırma için kullanacaksınız. Gizli değer bir daha görüntülenmeyecek ve Sertifikalar ve sırlar bölümünden uzaklaştıktan sonra hiçbir şekilde geri alınamayacaktır. Kaydettiğinizden emin olun.

Daemon uygulamanıza uygulama rolü atama

Kullanıcı olmadan kendi kendine kimlik doğrulaması yapılan uygulamalar için uygulama izinleri (roller olarak da bilinir) gerekir. Bu izinler, uygulamanın doğrudan kaynaklara erişmesine olanak sağlar. Öte yandan, API'yi oturum açmış bir kullanıcıyla test ediyor olsaydık, temsilci izinleri (kapsamlar) atardık. Temsilci izinleri, uygulamanın kullanıcının erişim haklarıyla sınırlı olarak kullanıcı adına işlem yapmasına olanak tanır. Daemon uygulamasına uygulama izinleri atamak için şu adımları izleyin:

  1. Uygulama kayıtları sayfasında, ciam-client-app gibi oluşturduğunuz uygulamayı seçin.

  2. Yönet'in altında API izinleri'ne tıklayın.

  3. Yapılandırılan izinler'in altında İzin ekle'yi seçin.

  4. Kuruluşumun kullandığı API'ler sekmesini seçin.

  5. API'ler listesinde ciam-ToDoList-api gibi API'yi seçin.

  6. Uygulama izinleri seçeneğini belirleyin. Uygulama kendi adıyla oturum açtığında ancak kullanıcı adına oturum açmadığı için bu seçeneği seçeriz.

  7. İzinler listesinden TodoList.Read.All, ToDoList.ReadWrite.All öğesini seçin (gerekirse arama kutusunu kullanın).

  8. İzin ekle düğmesini seçin.

  9. Bu noktada izinleri doğru atamış olursunuz. Ancak, daemon uygulaması kullanıcıların bu uygulamayla etkileşim kurmasına izin vermediğinden, kullanıcılar bu izinlere onay veremez. Bu sorunu çözmek için, yönetici olarak kiracıdaki tüm kullanıcılar adına bu izinleri onaylamanız gerekir:

    1. < ve ardından > seçin.
    2. Yenile'yi seçin, ardından < altında her iki izin için >kiracı adınız için Verildi ifadesinin göründüğünü doğrulayın.

Daemon uygulaması oluşturma

  1. Bir .NET konsol uygulaması başlatın ve kök klasörüne gidin:

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Aşağıdaki komutu çalıştırarak kimlik doğrulamasını işlemeye yardımcı olması için MSAL.NET yükleyin:

    dotnet add package Microsoft.Identity.Client
    
  3. API projenizi çalıştırın ve üzerinde çalıştığı bağlantı noktasını not edin.

  4. Program.cs dosyasını açın ve "Hello world" kodunu aşağıdaki kodla değiştirin.

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var response = await client.GetAsync("http://localhost:<your-api-port>/api/todolist);
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    daemon uygulaması kök dizinine gidin ve dotnet runkomutunu kullanarak uygulamayı çalıştırın. Bu kod erişim belirteci olmadan bir istek gönderir. Şu dizeyi görmeniz gerekir: Yanıtınız: Yetkisiz konsolunuzda görünecektir.

  5. 4. adımdaki kodu kaldırın ve geçerli bir erişim belirteci ile istek göndererek API'nizi test etmek için aşağıdakiyle değiştirin. Bu daemon uygulaması, kullanıcı etkileşimi gerektirmeden kimlik doğrulaması yapmak ve bir erişim belirteci almak için istemci kimlik bilgileri akışını kullanır.

    using Microsoft.Identity.Client;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var clientId = "<your-daemon-app-client-id>";
    var clientSecret = "<your-daemon-app-secret>";
    var scopes = new[] {"api://<your-web-api-application-id>/.default"};
    var tenantId = "<your-tenant-id>";     //Use in workforce tenant configuration
    var tenantName = "<your-tenant-name>"; //Use in external tenant configuration
    var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration 
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync();
    Console.WriteLine($"Access Token: {result.AccessToken}");
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist");
    var content = await response.Content.ReadAsStringAsync();
    
    Console.WriteLine("Your response is: " + response.StatusCode);
    Console.WriteLine(content);
    
  6. Koddaki yer tutucuları daemon uygulama istemcisi kimliğiniz, gizli anahtarınız, web API uygulama kimliğiniz ve kiracı adınız ile değiştirin.

    • Dış kiracılar için şu biçimde yetki kullanın: "https://{tenantName}.ciamlogin.com/"
    • İş gücü kiracıları için yetkiyi şu biçimde kullanın: "https://login.microsoftonline.com/{tenantId}"
  7. daemon uygulaması kök dizinine gidin ve dotnet runkomutunu kullanarak uygulamayı çalıştırın. Bu kod geçerli bir erişim belirteciyle bir istek gönderir. Şu dizeyi görmeniz gerekir: Yanıtınız: Konsolunuzda Tamam yazdırıldı.