Hızlı Başlangıç: Microsoft kimlik platformu tarafından korunan bir ASP.NET web API'sini çağırma

Hoş Geldiniz! Bu muhtemelen beklediğiniz sayfa değildir. Bir düzeltme üzerinde çalışırken bu bağlantı sizi doğru makaleye götürmelidir:

Hızlı Başlangıç: Korumalı ASP.NET web API'sini çağırma

Bu sorun için özür dileriz ve bu sorunu çözmek için çalışırken sabrınızı takdir ediyoruz.

Bu hızlı başlangıçta, kaynaklarına erişimi yalnızca yetkili hesaplarla kısıtlayarak ASP.NET web API'sini korumayı gösteren bir kod örneği indirip çalıştıracaksınız. Örnek, herhangi bir Microsoft Entra kuruluşundaki kişisel Microsoft hesaplarının ve hesaplarının yetkisini destekler.

Makalede ayrıca bir web API'sine erişmek için nasıl erişim belirteci isteyebileceğinizi göstermek için bir Windows Presentation Foundation (WPF) uygulaması kullanılır.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
  • Visual Studio 2017 veya 2019. Visual Studio'yu ücretsiz indirin.

Örneği kopyalama veya indirme

Örneği iki yoldan biriyle elde edebilirsiniz:

  • Kabuğunuzdan veya komut satırından kopyalayın:

    git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
    
  • Zip dosyası olarak indirin.

İpucu

Windows'ta yol uzunluğu sınırlamalarından kaynaklanan hataları önlemek için, arşivi ayıklamanızı veya depoyu sürücünüzün köküne yakın bir dizine kopyalamanızı öneririz.

Web API'sini kaydetme (TodoListService)

Web API'nizi Azure portalındaki Uygulama kayıtları kaydedin.

  1. Microsoft Entra yönetim merkezinde en az Uygulama Yönetici istrator olarak oturum açın.

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

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

  4. Uygulamanız için bir Ad girin, örneğin AppModelv2-NativeClient-DotNet-TodoListService. Uygulamanızın kullanıcıları bu adı görebilir ve daha sonra değiştirebilirsiniz.

  5. Desteklenen hesap türleri için herhangi bir kuruluş dizinindeki Hesaplar'ı seçin.

  6. Uygulamayı kaydetmek için Kaydet'i seçin.

  7. Uygulamaya Genel Bakış sayfasında Uygulama (istemci) kimliği değerini bulun ve daha sonra kullanmak üzere kaydedin. Bu proje için Visual Studio yapılandırma dosyasını (todoListService ClientId\Web.config dosyasında) yapılandırmak için buna ihtiyacınız olacaktır.

  8. Yönet'in altında API'yi>kullanıma sunma Kapsam ekle'yi seçin. Kaydet ve devam et'i seçip aşağıdaki bilgileri girerek önerilen Uygulama Kimliği URI'sini (api://{clientId}> ) kabul edin:

    1. Kapsam adı olarak girinaccess_as_user.
    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 girinAccess TodoListService as a user.
    4. Yönetici onay açıklaması kutusuna girinAccesses the TodoListService web API as a user.
    5. Kullanıcı onayı görünen adı kutusuna girinAccess TodoListService as a user.
    6. Kullanıcı onayı açıklaması kutusuna girinAccesses the TodoListService web API as a user.
    7. Durum için Etkin'i koruyun.
  9. Kapsam ekle'yi seçin.

Hizmet projesini yapılandırma

Hizmet projesini kayıtlı web API'sine uyacak şekilde yapılandırın.

  1. Çözümü Visual Studio'da açın ve ardından TodoListService projesinin kökü altındaki Web.config dosyasını açın.

  2. parametresinin ida:ClientId değerini, Uygulama kayıtları portalına kaydettiğiniz uygulamadan İstemci Kimliği (Uygulama Kimliği) değeriyle değiştirin.

Yeni kapsamı app.config dosyasına ekleme

Yeni kapsamı TodoListClient app.config dosyasına eklemek için şu adımları izleyin:

  1. TodoListClient proje kök klasöründe app.config dosyasını açın.

  2. TodoListService projeniz için kaydettiğiniz uygulamadan Uygulama Kimliğini parametresine TodoListServiceScope yapıştırın ve dizenin {Enter the Application ID of your TodoListService from the app registration portal} yerini alın.

Not

Uygulama Kimliği'nin şu biçimi kullandığından emin olun: api://{TodoListService-Application-ID}/access_as_user (burada {TodoListService-Application-ID} TodoListService uygulamanızın Uygulama Kimliğini temsil eden GUID'dir).

Web uygulamasını kaydetme (TodoListClient)

TodoListClient uygulamanızı Azure portalındaki Uygulama kayıtları kaydedin ve ardından TodoListClient projesindeki kodu yapılandırın. İstemci ve sunucu aynı uygulama olarak kabul edilirse, 2. adımda kaydedilen uygulamayı yeniden kullanabilirsiniz. Kullanıcıların kişisel bir Microsoft hesabıyla oturum açmasını istiyorsanız aynı uygulamayı kullanın.

Uygulamayı kaydetme

TodoListClient uygulamasını kaydetmek için şu adımları izleyin:

  1. Geliştiriciler için Microsoft kimlik platformu Uygulama kayıtları portalına gidin.

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

  3. Uygulamayı kaydet sayfası açıldığı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, NativeClient-DotNet-TodoListClient).
    2. Desteklenen hesap türleri için herhangi bir kuruluş dizinindeki Hesaplar'ı seçin.
    3. Uygulamayı kaydetmek için Kaydet'i seçin.

    Not

    TodoListClient proje app.config dosyasında varsayılan değeri ida:Tenant olarak commonayarlanır. Olası değerler:

    • common: bir iş veya okul hesabı ya da kişisel bir Microsoft hesabı kullanarak oturum açabilirsiniz (önceki adımda herhangi bir kuruluş dizininde Hesaplar'ı seçtiğiniz için).
    • organizations: İş veya okul hesabı kullanarak oturum açabilirsiniz.
    • consumers: Yalnızca bir Microsoft kişisel hesabı kullanarak oturum açabilirsiniz.
  4. Uygulamaya Genel Bakış sayfasında Kimlik Doğrulaması'nı seçin ve ardından platform eklemek için şu adımları tamamlayın:

    1. Platform yapılandırmaları'nın altında Platform ekle düğmesini seçin.
    2. Mobil ve masaüstü uygulamaları için Mobil ve masaüstü uygulamaları'yı seçin.
    3. Yeniden yönlendirme URI'leri için https://login.microsoftonline.com/common/oauth2/nativeclient onay kutusunu seçin.
    4. Yapılandır'yı seçin.
  5. API izinleri'ne tıklayın ve izin eklemek için şu adımları tamamlayın:

    1. İzin ekleyin düğmesini seçin.
    2. API'lerim sekmesini seçin.
    3. API'ler listesinde AppModelv2-NativeClient-DotNet-TodoListService API'sini veya web API'sine girdiğiniz adı seçin.
    4. Henüz seçili değilse access_as_user izin onay kutusunu seçin. Gerekirse Arama kutusunu kullanın.
    5. İzin ekle düğmesini seçin.

Projenizi yapılandırma

Uygulama Kimliğini app.config dosyasına ekleyerek TodoListClient projenizi yapılandırın.

  1. Uygulama kayıtları portalının Genel Bakış sayfasında Uygulama (istemci) kimliğinin değerini kopyalayın.

  2. TodoListClient proje kök klasöründen app.config dosyasını açın ve uygulama kimliği değerini parametresine ida:ClientId yapıştırın.

Projelerinizi çalıştırma

Her iki projenin de başlatılmasını sağlayın. Visual Studio kullanıyorsanız:

  1. Visual Studio çözümüne sağ tıklayın ve Özellikler'i seçin

  2. Ortak Özellikler'de Başlangıç Projesi'ni ve ardından Birden çok başlangıç projesi'ni seçin.

  3. Her iki proje için de eylem olarak Başlat'ı seçin

  4. TodoListService hizmetinin önce yukarı oku kullanarak listedeki ilk konuma taşıyarak başlatıldığından emin olun.

TodoListClient projenizi çalıştırmak için oturum açın.

  1. Projeleri başlatmak için F5 tuşuna basın. Hizmet sayfası ve masaüstü uygulaması açılır.

  2. TodoListClient'da, sağ üstteki Oturum aç'ı seçin ve ardından uygulamanızı kaydetmek için kullandığınız kimlik bilgileriyle oturum açın veya aynı dizinde bir kullanıcı olarak oturum açın.

    İlk kez oturum açıyorsanız TodoListService web API'sini onaylamanız istenebilir.

    TodoListService web API'sine erişmenize ve Yapılacaklar listesini işlemenize yardımcı olmak için, oturum açma işlemi access_as_user kapsamına bir erişim belirteci de ister.

İstemci uygulamanızı önceden yetkilendirme

İstemci uygulamasının web API'nize erişmesi için önceden yetki vererek diğer dizinlerden kullanıcıların web API'nize erişmesine izin vekleyebilirsiniz. Bunu yapmak için istemci uygulamasındaki Uygulama Kimliği'ni web API'niz için önceden yetkilendirilmiş uygulamalar listesine eklersiniz. Önceden yetkilendirilmiş bir istemci ekleyerek kullanıcıların onay vermek zorunda kalmadan web API'nize erişmesine izin vermiş olacaksınız.

  1. Uygulama kayıtları portalında TodoListService uygulamanızın özelliklerini açın.
  2. API'yi kullanıma sunma bölümünde, Yetkili istemci uygulamaları'nın altında İstemci uygulaması ekle'yi seçin.
  3. İstemci Kimliği kutusuna TodoListClient uygulamasının Uygulama Kimliğini yapıştırın.
  4. Yetkili kapsamlar bölümünde web API'sinin api://<Application ID>/access_as_user kapsamını seçin.
  5. Uygulama ekle'yi seçin.

Projenizi çalıştırma

  1. Projenizi çalıştırmak için F5 tuşuna basın. TodoListClient uygulamanız açılır.
  2. Sağ üst köşede Oturum aç'ı seçin ve live.com veya hotmail.com hesabı ya da iş veyaokul hesabı gibi kişisel bir Microsoft hesabı kullanarak oturum açın.

İsteğe bağlı: Oturum açma erişimini belirli kullanıcılarla sınırla

Varsayılan olarak, outlook.com veya live.com hesapları gibi tüm kişisel hesaplar ya da Microsoft Entra Id ile tümleştirilen kuruluşların iş veya okul hesapları belirteç isteyebilir ve web API'nize erişebilir.

Uygulamanızda kimlerin oturum açabileceğini belirtmek için aşağıdaki seçeneklerden birini kullanın:

1. Seçenek: Erişimi tek bir kuruluşa (tek kiracı) sınırlama

Uygulamanıza oturum açma erişimini, bu kiracının konuk hesapları da dahil olmak üzere tek bir Microsoft Entra kiracısında bulunan kullanıcı hesaplarıyla sınırlayabilirsiniz. Bu senaryo iş kolu uygulamaları için yaygındır.

  1. App_Start\Startup.Auth dosyasını açın ve içine geçirilen OpenIdConnectSecurityTokenProviderhttps://login.microsoftonline.com/{Tenant ID}/v2.0/.well-known/openid-configurationmeta veri uç noktasının değerini olarak değiştirin. Kiracı adını da kullanabilirsiniz, örneğin contoso.onmicrosoft.com.
  2. Aynı dosyada, üzerindeki TokenValidationParameters özelliğini olarak https://sts.windows.net/{Tenant ID}/ayarlayın ValidIssuer ve bağımsız değişkenini ValidateIssuer olarak trueayarlayın.

Seçenek 2: Verenleri doğrulamak için özel bir yöntem kullanma

parametresini kullanarak IssuerValidator verenleri doğrulamak için özel bir yöntem uygulayabilirsiniz. Bu parametre hakkında daha fazla bilgi için bkz . TokenValidationParameters sınıfı.

Yardım ve destek 

Yardıma ihtiyacınız varsa, bir sorunu bildirmek veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız bkz . Geliştiriciler için yardım ve destek.

Sonraki adımlar

Aşağıdaki öğretici serisinde korumalı ASP.NET Core web api'sini oluşturarak daha fazla bilgi edinin: