Aracılığıyla paylaş


Azure Uygulaması Hizmetinde ve Azure İşlevleri kimlik doğrulaması ve yetkilendirme

Azure App Service yerleşik kimlik doğrulaması (kullanıcılarda oturum açma) ve yetkilendirme (güvenli verilere erişim sağlama) özellikleri sağlar. Bu özellikler bazen Kolay Kimlik Doğrulaması olarak adlandırılır. Web uygulamanızda, RESTful API'nizde, mobil sunucunuzda ve işlevlerinizde çok az kod yazarak veya hiç kod yazmayarak kullanıcılarda oturum açmak ve verilere erişmek için bunları kullanabilirsiniz.

Bu makalede, App Service'in uygulamanız için kimlik doğrulama ve yetkilendirmeyi basitleştirmeye nasıl yardımcı olduğu açıklanmaktadır.

Yerleşik kimlik doğrulamasını kullanma nedenleri

Kimlik doğrulaması ve yetkilendirme uygulamak için, seçtiğiniz web çerçevenizde paketlenmiş güvenlik özelliklerini kullanabilir veya kendi araçlarınızı yazabilirsiniz. Kimlik doğrulaması ve yetkilendirme için güvenli bir çözüm uygulamak büyük çaba gerektirebilir. Sektörün en iyi yöntemlerini ve standartlarını izlemeniz gerekir. Ayrıca çözümünüzün en son güvenlik, protokol ve tarayıcı güncelleştirmeleriyle güncel kaldığından emin olmanız gerekir.

App Service ve Azure İşlevleri'nin yerleşik özellikleri, federasyon kimlik sağlayıcılarıyla kullanıma açık kimlik doğrulaması sağlayarak size zaman ve çaba kazandırabilir, böylece uygulamanızın geri kalanına odaklanabilirsiniz.

App Service ile kimlik doğrulama özelliklerini kendi başınıza uygulamadan web uygulamanıza veya API'nize tümleştirebilirsiniz. Bu özellik doğrudan platformda yerleşiktir ve belirli bir dil, SDK, güvenlik uzmanlığı veya kod gerektirmez. Bunu Microsoft Entra, Facebook, Google ve X gibi birden çok oturum açma sağlayıcısıyla tümleştirebilirsiniz.

Uygulamanızın Visual Studio tümleştirmesi veya artımlı onay gibi daha karmaşık senaryoları desteklemesi gerekebilir. Bu senaryoları desteklemek için çeşitli kimlik doğrulama çözümleri mevcuttur. Daha fazla bilgi edinmek için bkz . Kimlik doğrulama senaryoları ve öneriler.

Kimlik sağlayıcıları

App Service federe kimlik kullanır. Kullanıcı kimliklerini ve kimlik doğrulama akışını sizin için Microsoft veya Microsoft dışı bir kimlik sağlayıcısı yönetir. Aşağıdaki kimlik sağlayıcıları varsayılan olarak kullanılabilir:

Sağlayıcı Oturum açma uç noktası Nasıl yapılır rehberi
Microsoft Entra /.auth/login/aad App Service Microsoft Entra platformu oturum açma
Facebook /.auth/login/facebook App Service ile Facebook'ta oturum açma
Google /.auth/login/google App Service Google oturum açma
X /.auth/login/x App Service X oturum açma
GitHub (İngilizce) /.auth/login/github App Service GitHub oturum açma
Elma /.auth/login/apple Apple ile oturum açma (önizleme) aracılığıyla App Service oturumu açma
Herhangi bir OpenID Connect sağlayıcısı /.auth/login/<providerName> App Service OpenID Connect oturum açma

Bu özelliği bu sağlayıcılardan biriyle yapılandırdığınızda, oturum açma uç noktası kullanıcı kimlik doğrulaması ve sağlayıcıdan kimlik doğrulama belirteçlerinin doğrulanması için kullanılabilir. Kullanıcılarınıza bu oturum açma seçeneklerinden istediğiniz sayıda sağlayabilirsiniz.

Yerleşik kimlik doğrulamasını kullanma konusunda dikkat edilmesi gerekenler

Yerleşik kimlik doğrulamasının etkinleştirilmesi, App Service yapılandırma ayarının HTTPS'yi zorlamasına bakılmaksızın uygulamanıza yönelik tüm isteklerin otomatik olarak HTTPS'ye yeniden yönlendirilmesine neden olur. V2 yapılandırmasındaki ayarı kullanarak bu otomatik yeniden yönlendirmeyi requireHttps devre dışı bırakabilirsiniz. Ancak, HTTPS kullanmaya devam edip güvenli olmayan HTTP bağlantıları üzerinden hiçbir güvenlik belirteci iletilmediğinden emin olmanız önerilir.

Site içeriğinize ve API'lerinize erişimi kısıtlayarak veya kısıtlamadan kimlik doğrulaması için App Service'i kullanabilirsiniz. Web uygulamanızın Ayarlar>Kimlik Doğrulama>ayarları bölümünde erişim kısıtlamalarını ayarlayın:

  • Uygulama erişimini yalnızca kimliği doğrulanmış kullanıcılarla kısıtlamak için, istek kimliği doğrulanmadığında yapılacak eylemi yapılandırılmış kimlik sağlayıcılarından biriyle oturum açacak şekilde ayarlayın.
  • Kimlik doğrulaması yapmak ancak erişimi kısıtlamamak için İstek kimliği doğrulanmadığında gerçekleştirecek Eylem'iAnonim isteklere izin ver (eylem yok) olarak ayarlayın.

Önemli

Her uygulama kaydına kendi iznini ve onayını vermelisiniz. Ayrı dağıtım yuvaları için ayrı uygulama kayıtları kullanarak ortamlar arası izin paylaşımından kaçının. Yeni kodu test ederken, bu uygulama sorunların üretim uygulamasını etkilemesini önlemeye yardımcı olabilir.

Nasıl çalışır?

Özellik mimarisi

Kimlik doğrulama ve yetkilendirme ara yazılımı bileşeni, platformda uygulamanızla aynı sanal makinede çalışan bir özelliktir. Etkinleştirdiğinizde, uygulamanız bunu işlemeden önce gelen her HTTP isteği bu bileşenden geçer.

Site korumalı alanındaki bir sürecin dağıtılan siteye trafik izni vermeden önce kimlik sağlayıcılarıyla etkileşimini gösteren mimari diyagram.

Platform ara yazılımı, uygulamanız için çeşitli işlemleri işler:

  • Belirtilen kimlik sağlayıcılarıyla kullanıcıların ve istemcilerin kimliğini doğrular
  • Yapılandırılan kimlik sağlayıcılarının yayımlamış olduğu OAuth belirteçlerini doğrular, depolar ve yeniler
  • Doğrulanmış oturumu yönetir
  • Kimlik bilgilerini HTTP istek üst bilgilerine ekler

Modül, uygulama kodunuzdan ayrı olarak çalışır. Azure Resource Manager ayarlarını kullanarak veya bir yapılandırma dosyası kullanarak yapılandırabilirsiniz. SDK'lar, belirli programlama dilleri veya uygulama kodunuzda değişiklik yapılması gerekmez.

Windows'ta özellik mimarisi (kapsayıcı dışı dağıtım)

Kimlik doğrulama ve yetkilendirme modülü, uygulamanızla aynı korumalı alanda yerel IIS modülü olarak çalışır. Etkinleştirdiğinizde, uygulamanız işlemeden önce gelen her HTTP isteği bu istekten geçer.

Linux ve kapsayıcılarda özellik mimarisi

Kimlik doğrulama ve yetkilendirme modülü, uygulama kodunuzdan yalıtılmış ayrı bir kapsayıcıda çalışır. Modül, Windows'dakine benzer işlevleri gerçekleştirmek üzere gelen trafikle etkileşime geçmek için Büyükelçi desenini kullanır. İşlem sırasında çalışmadığından, belirli dil çerçeveleriyle doğrudan tümleştirme mümkün değildir. Ancak, uygulamanızın ihtiyaç duyduğu ilgili bilgiler istek üst bilgilerinde aktarılır.

Kimlik doğrulama akışı

Kimlik doğrulama akışı tüm sağlayıcılar için aynıdır. Sağlayıcının SDK'sıyla oturum açmak isteyip istemediğinize bağlı olarak farklılık gösterir:

  • Sağlayıcı SDK'sı olmadan: Uygulama, federasyon oturum açma işlemlerini App Service'e devreder. Genellikle sağlayıcının oturum açma sayfasını kullanıcıya gösterebilen tarayıcı uygulamaları için bu yetkilendirme söz konusudur. Sunucu kodu oturum açma işlemini yönetir, bu nedenle sunucu tarafından yönlendirilen akış veya sunucu akışı olarak da adlandırılır.

    Bu durum, kimlik doğrulaması için ekli tarayıcı kullanan tarayıcı uygulamaları ve mobil uygulamalar için geçerlidir.

  • Sağlayıcı SDK'sı ile: Uygulama, kullanıcıları sağlayıcıda el ile oturum açar. Ardından doğrulama için kimlik doğrulama belirtecini App Service'e gönderir. Bu işlem genellikle, sağlayıcının oturum açma sayfasını kullanıcıya sunmayan tarayıcısız uygulamalarda geçerlidir. Uygulama kodu oturum açma işlemini yönetir, bu nedenle istemci tarafından yönlendirilen akış veya istemci akışı olarak da adlandırılır.

    Bu durum REST API'leri, Azure İşlevleri ve JavaScript tarayıcı istemcilerinin yanı sıra oturum açma işleminde daha fazla esneklik gerektiren tarayıcı uygulamaları için de geçerlidir. Ayrıca, sağlayıcının SDK'sını kullanarak kullanıcılarda oturum açabilen yerel mobil uygulamalar için de geçerlidir.

App Service'teki güvenilir bir tarayıcı uygulamasından App Service veya Azure İşlevleri'ndeki başka bir REST API'ye yapılan çağrıların kimliği, sunucu tarafından yönlendirilen akış aracılığıyla doğrulanabilir. Daha fazla bilgi için bkz Azure Uygulama Hizmeti kimlik doğrulamasında oturum açmayı ve kapatmayı özelleştirme.

Aşağıdaki tabloda kimlik doğrulama akışının adımları gösterilmektedir.

Adım Sağlayıcı SDK'sı olmadan Sağlayıcı SDK'sı ile
1. Kullanıcının oturumunu açın Sağlayıcı istemcisini adresine /.auth/login/<provider>yönlendirir. İstemci kodu, kullanıcıyı doğrudan sağlayıcının SDK'sını kullanarak oturum açar ve bir kimlik doğrulama belirteci alır. Daha fazla bilgi için sağlayıcının belgelerine bakın.
Kimlik doğrulaması sonrası işlemleri yürütün Sağlayıcı istemcisini adresine /.auth/login/<provider>/callbackyönlendirir. İstemci kodu sağlayıcıdan aldığı belirteci doğrulama için/.auth/login/<provider>'e postalar.
3. Kimliği doğrulanmış oturum oluşturma App Service yanıta kimliği doğrulanmış bir çerez ekler. App Service, istemci koduna kendi kimlik doğrulama belirtecini döndürür.
4. Kimliği doğrulanmış içerik sunma Sonraki isteklerde istemci bir kimlik doğrulama çerezi içerir, bu işlem tarayıcı tarafından otomatik olarak gerçekleştirilir. İstemci kodu, kimlik doğrulama belirtecini X-ZUMO-AUTH başlıkta sunar.

İstemci tarayıcıları için App Service, kimliği doğrulanmamış tüm kullanıcıları otomatik olarak /.auth/login/<provider> öğesine yönlendirebilir. Kullanıcılara, tercih ettikleri sağlayıcıyı kullanarak uygulamanızda oturum açmak için bir veya daha fazla /.auth/login/<provider> bağlantı da sunabilirsiniz.

Yetkilendirme davranışı

Azure portalında, gelen bir isteğin kimliği doğrulanmamışsa App Service'i çeşitli davranışlarla yapılandırabilirsiniz. Aşağıdaki bölümlerde seçenekler açıklanmaktadır.

Önemli

Varsayılan olarak, bu özellik yetkilendirmeyi değil yalnızca kimlik doğrulamayı sağlar. Uygulamanızın burada yapılandırdığınız denetimlere ek olarak yetkilendirme kararları da vermesi gerekebilir.

Kısıtlı erişim

  • Kimliği doğrulanmamış isteklere izin ver: Bu seçenek, uygulama kodunuz için kimliği doğrulanmamış trafiğin yetkilendirmesini engeller. Kimliği doğrulanmış istekler için App Service, HTTP üst bilgilerinde kimlik bilgilerini de aktarır.

    Bu seçenek anonim istekleri işleme konusunda daha fazla esneklik sağlar. Örneğin, kullanıcılarınıza birden çok oturum açma sağlayıcısı sunmanızı sağlar. Ancak kod yazmanız gerekir.

  • Kimlik doğrulaması gerektir: Bu seçenek, uygulamanıza yönelik kimliği doğrulanmamış trafiği reddeder. Gerçekleştirecek belirli eylem, bu makalenin devamında yer alan Kimliği Doğrulanmamış istekler bölümünde belirtilir.

    Bu seçenekle, uygulamanıza herhangi bir kimlik doğrulama kodu yazmanız gerekmez. Kullanıcının taleplerini inceleyerek role özgü yetkilendirme gibi daha ayrıntılı yetkilendirmeyi işleyebilirsiniz.

    Dikkat

    Erişimi bu şekilde kısıtlamak, uygulamanıza yapılan tüm çağrılar için geçerlidir. Bu, birçok tek sayfalı uygulamada olduğu gibi genel kullanıma açık bir giriş sayfası isteyen uygulamalar için de istenmeyebilir. Özel durumlar gerekiyorsa, yapılandırma dosyasında dışlanan yolları yapılandırmanız gerekir.

    Not

    Microsoft Entra kiracınızdaki herhangi bir kullanıcının uygulamanız için bir belirteç isteyebilmesi, kuruluşunuzdaki kullanıcılar için Microsoft kimlik sağlayıcısını kullanırken varsayılan davranıştır. Uygulamanıza erişimi tanımlı bir kullanıcı kümesiyle kısıtlamak istiyorsanız, uygulamayı Microsoft Entra'da yapılandırabilirsiniz. App Service, ayrıca bazı doğrulamalara yardımcı olabilecek bazı temel yerleşik yetkilendirme denetimleri de sunar. Microsoft Entra'da yetkilendirme hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra yetkilendirme temelleri.

Kuruluşunuzdaki kullanıcılar için Microsoft kimlik sağlayıcısını kullanırken varsayılan davranış, Microsoft Entra kiracınızdaki tüm kullanıcıların uygulamanız için belirteç istemesidir. Uygulamanıza erişimi tanımlı bir kullanıcı kümesiyle kısıtlamak istiyorsanız, uygulamayı Microsoft Entra'da yapılandırabilirsiniz. App Service ayrıca bazı doğrulamalara yardımcı olabilecek bazı temel yerleşik yetkilendirme denetimleri de sunar. Microsoft Entra'da yetkilendirme hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra yetkilendirme temelleri.

Kimliği doğrulanmamış istekler

  • HTTP 302 Bulunduğu yönlendirme: Web siteleri için önerilir: Eylemi yapılandırılmış kimlik sağlayıcılarından birine yönlendirir. Seçtiğiniz sağlayıcı için bir tarayıcı istemcisi /.auth/login/<provider>'a yönlendirilir.
  • HTTP 401 Yetkisiz: API'ler için önerilir: Anonim istek yerel bir HTTP 401 Unauthorized mobil uygulamadan geliyorsa bir yanıt döndürür. Reddetmeyi tüm istekler için olacak HTTP 401 Unauthorized şekilde de yapılandırabilirsiniz.
  • HTTP 403 Yasak: Reddetmeyi tüm istekler için olacak şekilde HTTP 403 Forbidden yapılandırıyor.
  • HTTP 404 Bulunamadı: Reddetmeyi tüm istekler için olacak HTTP 404 Not found şekilde yapılandırıyor.

Jeton deposu

App Service yerleşik bir jeton deposu sağlar. Belirteç deposu, web uygulamalarınızın, API'lerinizin veya yerel mobil uygulamalarınızın kullanıcılarıyla ilişkili belirteç deposudur. Herhangi bir sağlayıcıyla kimlik doğrulamasını etkinleştirdiğinizde, bu belirteç deposu uygulamanız tarafından hemen kullanılabilir.

Uygulama kodunuzun bu sağlayıcılardan gelen verilere kullanıcı adına erişmesi gerekiyorsa, genellikle uygulamanızda bu belirteçleri toplamak, depolamak ve yenilemek için kod yazmanız gerekir. Eylemler şunları içerebilir:

  • Kimliği doğrulanmış kullanıcının Facebook zaman çizelgesine gönderin.
  • Microsoft Graph API'sini kullanarak kullanıcının şirket verilerini okuyun.

Belirteç deposuyla, yalnızca ihtiyacınız olduğunda belirteçleri alırsınız ve App Service'e geçersiz olduklarında bunları yenilemesini söylersiniz.

Kimlik belirteçleri, erişim belirteçleri ve yenileme belirteçleri, kimliği doğrulanmış oturum için önbelleğe alınır. Yalnızca ilişkili kullanıcı bunlara erişebilir.

Uygulamanızda belirteçlerle çalışmanız gerekmiyorsa, uygulamanızın Ayarlar>Kimlik Doğrulaması sayfasında belirteç deponuzu devre dışı bırakabilirsiniz.

Loglama ve izleme

Uygulama günlüğünü etkinleştirirseniz, kimlik doğrulaması ve yetkilendirme izlemeleri doğrudan günlük dosyalarınızda görünür. Beklemediğiniz bir kimlik doğrulama hatası görürseniz, mevcut uygulama günlüklerinize bakarak tüm ayrıntıları kolayca bulabilirsiniz.

Başarısız istek izlemeyi etkinleştirirseniz, kimlik doğrulama ve yetkilendirme modülünün başarısız istekte tam olarak hangi rolü oynayabileceğini görebilirsiniz. İzleme günlüklerinde EasyAuthModule_32/64 adlı modüle yapılan başvuruları arayın.

Siteler arası istek sahteciliğini azaltma

App Service kimlik doğrulaması, aşağıdaki koşullar için istemci isteklerini inceleyerek siteler arası istek sahteciliğini azaltır:

  • Kimlik doğrulaması oturum POST tanımlama bilgisi aracılığıyla yapılan bir istektir.
  • İstek, HTTP User-Agent üst bilgisi tarafından belirlenen bilinen bir tarayıcıdan geldi.
  • HTTP Origin veya HTTP Referer üst bilgisi eksik veya yeniden yönlendirme için onaylanan dış etki alanları listesinde yer almıyor.
  • HTTP Origin üst bilgisi eksik veya yapılandırılmış çıkış noktaları arası kaynak paylaşımı (CORS) kaynak kaynak listesinde yok.

Bir istek tüm bu koşulları karşıladığında App Service kimlik doğrulaması bunu otomatik olarak reddeder. Ayarlar>Kimlik Doğrulama>Ayarlama> bölümündeki İzin verilen dış yeniden yönlendirme URL'leri listesine dış etki alanınızı ekleyerek bu azaltma mantığını aşabilirsiniz.

Azure Front Door'un kullanımıyla ilgili dikkat edilmesi gerekenler

Azure Front Door'un veya diğer ters proxy'lerin arkasında kimlik doğrulamasıyla Azure App Service'i kullanırken aşağıdaki eylemleri göz önünde bulundurun.

Azure Front Door önbelleğini devre dışı bırakma

Kimlik doğrulaması iş akışı için Azure Front Door önbelleğini devre dışı bırakın.

Yeniden yönlendirmeler için Azure Front Door uç noktasını kullanma

App Service genellikle Azure Front Door tarafından kullanıma sunulduğunda doğrudan erişilemez. Örneğin, Azure Front Door Premium'da Azure Özel Bağlantı'yı kullanarak App Service'i kullanıma sunarak bu davranışı önleyebilirsiniz. Kimlik doğrulama iş akışının trafiği doğrudan App Service'e yeniden yönlendirmesini önlemek için. Daha fazla bilgi için bkz. Yeniden yönlendirme URI'si.

App Service'in doğru yeniden yönlendirme URI'sini kullandığından emin olun

Bazı yapılandırmalarda App Service, Azure Front Door FQDN yerine yeniden yönlendirme URL'si olarak tam etki alanı adını (FQDN) kullanır. bu yapılandırma, istemci Azure Front Door yerine App Service'e yeniden yönlendirildiğinde bir soruna neden olur. Bunu değiştirmek için forwardProxy üzerindeki ayarı Standard olarak belirleyin, böylece App Service, Azure Front Door'un ayarladığı X-Forwarded-Host başlığına saygı duysun.

Azure Application Gateway veya Microsoft dışı ürünler gibi diğer ters proxy'ler farklı üst bilgiler kullanabilir ve farklı forwardProxy bir ayara ihtiyaç duyabilir.

Azure portalını kullanarak yapılandırmayı forwardProxy değiştiremezsiniz. kullanmanız az restgerekir.

Dışarı aktarma ayarları

az rest --uri /subscriptions/REPLACE-ME-SUBSCRIPTIONID/resourceGroups/REPLACE-ME-RESOURCEGROUP/providers/Microsoft.Web/sites/REPLACE-ME-APPNAME/config/authsettingsV2?api-version=2020-09-01 --method get > auth.json

Ayarları güncelleştirme

Ara:

"httpSettings": {
  "forwardProxy": {
    "convention": "Standard"
  }
}

convention değerini, Azure Front Door'un kullandığı Standard üst bilgisiyle uyumlu olacak şekilde X-Forwarded-Host olarak ayarlandığından emin olun.

İçeri aktarma ayarları

az rest --uri /subscriptions/REPLACE-ME-SUBSCRIPTIONID/resourceGroups/REPLACE-ME-RESOURCEGROUP/providers/Microsoft.Web/sites/REPLACE-ME-APPNAME/config/authsettingsV2?api-version=2020-09-01 --method put --body @auth.json

App Service kimlik doğrulaması hakkında daha fazla bilgi için bkz:

Örnekler için bkz: