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

Uygulama ve kayıt tanımlayıcılarını kaydetme

İpucu

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.

  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 uygulamayı kaydetmek istediğiniz kiracıya geçmek için üst menüdeki Ayarlar simgesini kullanın.

  3. Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları.

  4. Yeni kayıt öğesini seçin.

  5. Uygulama için NewWebAPI1 gibi bir Ad girin.

  6. 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.

  7. Kaydet'i seçin.

    Bir ad girmeyi ve hesap türünü seçmeyi gösteren ekran görüntüsü.

  8. 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.

    Genel bakış sayfasındaki tanımlayıcı değerlerini gösteren ekran görüntüsü.

Not

Desteklenen hesap türleri, Uygulama tarafından desteklenen hesapları değiştirme konusuna başvurarak değiştirilebilir.

Bir 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.

  1. 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:

    1. Kapsam adı olarak girinForecast.Read.
    2. Kim onaylayabilir? için Yönetici ve kullanıcılar seçeneğinin belirlendiğinden emin olun.
    3. Yönetici onay görünen adı kutusuna girinRead forecast data.
    4. Yönetici onay açıklaması kutusuna girinAllows the application to read weather forecast data.
    5. Kullanıcı onayı görünen adı kutusuna girinRead forecast data.
    6. Kullanıcı onayı açıklaması kutusuna girinAllows the application to read weather forecast data.
    7. Durum'un Etkin olarak ayarlandığından emin olun.
  2. Kapsam ekle'yi seçin. Kapsam doğru girilmişse, API'yi kullanıma sunma bölmesinde listelenir.

    Kapsamı bir API'ye eklerken alan değerlerini gösteren ekran görüntüsü.

Ö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

  1. IDE'nizde, örneği içeren ms-identity-docs-code-dotnet/web-api proje klasörünü açın.

  2. 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 keybulun:

    • 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ırın

  1. Uygulamayı başlatmak için aşağıdaki komutu yürütebilirsiniz:

    dotnet run
    
  2. Aşağıdaki örneğe benzer bir çıkış görüntülenir:

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

    BAĞLANTı noktası numarasını URL'ye https://localhost:{port} kaydedin.

  3. Uç noktanın korunduğunu doğrulamak için Bash'te aşağıdaki cURL komutunu kullanarak Bash'te kimliği doğrulanmamış bir HTTP GET isteği gönderin:

    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