Korumalı API'nizi test edin
Bu öğretici, dış kiracıda 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 1. Bölümünde bir ASP.NET Core web API'sini oluşturdunuz ve uç noktalarını korudunız. Bu son adımda, daemon uygulamasını kaydedip API'nizi test edin.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Web API'sini çağıran basit bir daemon uygulaması kullanarak korumalı bir web API'sini test edin
Önkoşullar
Öğretici: Dış kiracıda kayıtlı ASP.NET Core web API'lerinin güvenliğini sağlama
Daemon uygulamasını kaydetme
Aşağıdaki adımlar, daemon uygulamanızı Microsoft Entra yönetim merkezine nasıl kaydedeceğini gösterir:
Microsoft Entra yönetim merkezinde en azından Uygulama Geliştiricisi olarak oturum açın.
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.
Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları.
+ Yeni kayıt'ı seçin.
Görüntülenen Uygulamayı kaydet sayfasında, uygulamanızın kayıt bilgilerini girin:
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.
Desteklenen hesap türleri'nin altında Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin.
Kaydet'i seçin.
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 gizli dizisi oluşturun. Uygulama, belirteç istediğinde kimliğini kanıtlamak için istemci gizli dizisini kullanır.
- Uygulama kayıtları sayfasında, oluşturduğunuz uygulamayı (ciam-client-app gibi) seçerek Genel Bakış sayfasını açın.
- Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
- Yeni gizli anahtar'ı seçin.
- Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, ciam uygulama istemci gizli dizisi).
- Süre Sonu'nun altında gizli dizinin geçerli olduğu bir süre seçin (kuruluşunuzun güvenlik kurallarına göre) ve ardından Ekle'yi seçin.
- Gizli dizinin Değerini kaydedin. Bu değeri sonraki bir adımda yapılandırma için kullanacaksınız. Gizli dizi değeri yeniden görüntülenmez ve Sertifikalar ve gizli dizilerden uzaklaştıktan sonra herhangi bir yolla alınamaz. Kaydettiğinizden emin olun.
Daemon uygulamanıza uygulama rolü atama
Tek başına kimlik doğrulaması yapılan uygulamalar için uygulama izinleri gerekir.
Uygulama kayıtları sayfasında, oluşturduğunuz uygulamayı (ciam-client-app gibi) seçin.
Yönet'in altında API izinleri'ne tıklayın.
Yapılandırılan izinler'in altında İzin ekle'yi seçin.
Kuruluşumun kullandığı API'ler sekmesini seçin.
API'ler listesinde ciam-ToDoList-api gibi API'yi seçin.
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.
İzinler listesinden TodoList.Read.All, ToDoList.ReadWrite.All öğesini seçin (gerekirse arama kutusunu kullanın).
İzin ekle düğmesini seçin.
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:
- Kiracı adınız> için <Yönetici onayı ver'i ve ardından Evet'i seçin.
- Yenile'yi seçin, ardından Kiracı adınız> için <Verildi seçeneğinin her iki izin için de Durum altında göründüğünü doğrulayın.
Kod yazma
.NET konsol uygulamasını başlatın ve kök klasörüne gidin
dotnet new console -o MyTestApp cd MyTestApp
Aşağıdaki komutu çalıştırarak kimlik doğrulamasını işlemenize yardımcı olması için MSAL'yi yükleyin:
dotnet add package Microsoft.Identity.Client
API projenizi çalıştırın ve üzerinde çalıştığı bağlantı noktasını not edin.
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("https://localhost:<your-api-port>/api/todolist"); Console.WriteLine("Your response is: " + response.StatusCode);
daemon uygulaması kök dizinine gidin ve komutunu
dotnet run
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: Konsolunuzda yetkisiz yazdırıldı.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.
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 tenantName= "<your-tenant-name>"; var authority = $"https://{tenantName}.ciamlogin.com/"; var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(scopes).ExecuteAsync(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("https://localhost:44351/api/todolist"); Console.WriteLine("Your response is: " + response.StatusCode);
daemon uygulaması kök dizinine gidin ve komutunu
dotnet run
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ı.