Hızlı Başlangıç: Microsoft kimlik platformu ile ASP.NET Core web API'sini koruma
Bu hızlı başlangıçta, yetkili hesaplara kaynak erişimini kısıtlamayı göstermek için ASP.NET Core web API'si kod örneği kullanılmaktadır. Örnek, kimlik doğrulamasını işlemek için Microsoft Kimlik Doğrulama Kitaplığı (MSAL) ile etkileşim kuran ASP.NET Çekirdek Kimliği kullanır.
Önkoşullar
- Etkin aboneliği olan Azure hesabı. Henüz bir hesabınız yoksa ücretsiz bir hesap oluşturun.
- En düşük .NET 8.0 SDK gereksinimi
- Visual Studio 2022 veya Visual Studio Code
Uygulama ve kayıt tanımlayıcılarını kaydetme
Bahşiş
Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.
Kaydı tamamlamak için uygulamaya bir ad verin ve desteklenen hesap türlerini belirtin. Kaydedildikten sonra, uygulamaya Genel Bakış sayfasında uygulama kaynak kodunda gereken tanımlayıcılar görüntülenir.
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 uygulamayı kaydetmek istediğiniz kiracıya 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.
Uygulama için NewWebAPI1 gibi bir Ad girin.
Desteklenen hesap türleri için Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin. Farklı hesap türleri hakkında bilgi için Yardım et seçeneğini belirleyin.
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.
Not
Desteklenen hesap türleri, Uygulama tarafından desteklenen hesapları değiştirme konusuna başvurarak değiştirilebilir.
API'yi kullanıma sunma
API kaydedildikten sonra, API'nin istemci uygulamalarına sunduğu kapsamları tanımlayarak api'nin iznini yapılandırabilirsiniz. İstemci uygulamaları, korumalı web API'sine istekleriyle birlikte bir erişim belirteci geçirerek işlemleri gerçekleştirmek için izin istemektedir. Web API'si daha sonra istenen işlemi yalnızca aldığı erişim belirteci gerekli kapsamları içeriyorsa gerçekleştirir.
Yönet'in altında API'yi > kullanıma sunma Kapsam ekle'yi seçin. Kaydet ve devam et'i seçerek önerilen Uygulama Kimliği URI'sini
(api://{clientId})
kabul edin.{clientId}
, Genel Bakış sayfasından kaydedilen değerdir. Ardından aşağıdaki bilgileri girin:- Kapsam adı olarak girin
Forecast.Read
. - Kim onaylayabilir? için Yöneticiler ve kullanıcılar seçeneğinin belirlendiğinden emin olun.
- Yönetici onayı görünen adı kutusuna girin
Read forecast data
. - Yönetici onayı açıklaması kutusuna yazın
Allows the application to read weather forecast data
. - Kullanıcı onayı görünen adı kutusuna girin
Read forecast data
. - Kullanıcı onayı açıklaması kutusuna girin
Allows the application to read weather forecast data
. - Durum'un Etkin olarak ayarlandığından emin olun.
- Kapsam adı olarak girin
Kapsam ekle'yi seçin. Kapsam doğru girilmişse, API'yi kullanıma sunma bölmesinde listelenir.
Örnek uygulamayı kopyalama veya indirme
Örnek uygulamayı edinmek için GitHub'dan kopyalayabilir veya .zip dosyası olarak indirebilirsiniz.
Örneği kopyalamak için bir komut istemi açın ve projeyi oluşturmak istediğiniz yere gidin ve aşağıdaki komutu girin:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
.zip dosyasını indirin. Adın uzunluğu 260 karakterden az olan bir dosya yoluna ayıklayın.
ASP.NET Core örnek uygulamasını yapılandırma
IDE'nizde, örneği içeren ms-identity-docs-code-dotnet/web-api proje klasörünü açın.
Aşağıdaki kod parçacığını içeren dosyayı açın
appsettings.json
:{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center", "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center", "Scopes": "Forecast.Read" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Aşağıdakileri
key
bulun:ClientId
- İstemci olarak da adlandırılan uygulamanın tanımlayıcısı.value
Tırnak içindeki metni, kayıtlı uygulamanın Genel Bakış sayfasından daha önce kaydedilen Uygulama (istemci) kimliğiyle değiştirin.TenantId
- Uygulamanın kayıtlı olduğu kiracının tanımlayıcısı.value
Tırnak içindeki metni, kayıtlı uygulamanın Genel Bakış sayfasından daha önce kaydedilen Dizin (kiracı) kimliği değeriyle değiştirin.
Örnek uygulamayı çalıştırma
Uygulamayı başlatmak için aşağıdaki komutu yürütebilirsiniz:
dotnet run
Aşağıdaki örneğe benzer bir çıkış görüntülenir:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
BAĞLANTı noktası numarasını URL'ye
http://localhost:{port}
kaydedin.Uç noktanın korunduğunu doğrulamak için, aşağıdaki cURL komutundaki temel URL'yi önceki adımda aldığınızla eşleşecek şekilde güncelleştirin ve ardından komutunu çalıştırın:
curl -X GET https://localhost:5001/weatherforecast -ki
Beklenen yanıt 401 Yetkisiz ve şuna benzer bir çıkıştır:
user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki HTTP/2 401 date: Fri, 23 Sep 2023 23:34:24 GMT server: Kestrel www-authenticate: Bearer content-length: 0
Sonraki adımlar
cURL kullanarak korumalı web API'sini çağırmayı öğrenmek için sonraki makaleye geçin.