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

Azure Uygulaması Hizmeti, web uygulamanızda, RESTful API'nizde ve mobil arka ucunuzda en az kod yazarak veya hiç kod yazmayarak ve ayrıca Azure İşlevleri yaparak kullanıcılarda oturum açabilmeniz ve verilere erişebilmeniz için yerleşik kimlik doğrulama ve yetkilendirme özellikleri (bazen "Kolay Kimlik Doğrulaması" olarak da adlandırılır) sağlar. 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.

Neden yerleşik kimlik doğrulamasını kullanmalısınız?

Kimlik doğrulaması ve yetkilendirme için bu özelliği kullanmanız gerekmez. Paketlenmiş güvenlik özelliklerini tercih ettiğiniz web çerçevenizde kullanabilir veya kendi yardımcı programlarınızı yazabilirsiniz. Ancak, çözümünüzün en son güvenlik, protokol ve tarayıcı güncelleştirmeleriyle güncel kaldığından emin olmanız gerekir.

Kimlik doğrulaması (oturum açma kullanıcıları) ve yetkilendirme (güvenli verilere erişim sağlama) için güvenli bir çözüm uygulamak önemli çaba gerektirebilir. Endüstrinin en iyi yöntemlerini ve standartlarını izlediğinizden ve uygulamanızı güncel tuttuğunuzdan emin olmanız gerekir. App Service ve Azure İşlevleri için yerleşik kimlik doğrulama özelliği, federasyon kimlik sağlayıcılarıyla kullanıma hazır kimlik doğrulaması sağlayarak zaman ve çabadan tasarruf etmenizi sağlayabilir ve uygulamanızın geri kalanına odaklanmanızı sağlar.

  • Azure Uygulaması Hizmeti, çeşitli kimlik doğrulama özelliklerini kendi başınıza uygulamadan web uygulamanıza veya API'nize tümleştirmenize olanak tanır.
  • Doğrudan platformda yerleşik olarak bulunur ve belirli bir dil, SDK, güvenlik uzmanlığı ve hatta kullanmak için herhangi bir kod gerektirmez.
  • Birden çok oturum açma sağlayıcısıyla tümleştirebilirsiniz. Örneğin, Microsoft Entra, Facebook, Google, Twitter.

Uygulamanızın Visual Studio tümleştirmesi veya artımlı onay gibi daha karmaşık senaryoları desteklemesi gerekebilir. Bu senaryoları desteklemek için birkaç farklı kimlik doğrulama çözümü vardır. Daha fazla bilgi edinmek için Kimlik senaryoları'nı okuyun.

Kimlik sağlayıcıları

App Service, üçüncü taraf kimlik sağlayıcısının kullanıcı kimliklerini ve kimlik doğrulama akışını sizin için yönettiği federasyon kimliğini kullanır. Aşağıdaki kimlik sağlayıcıları varsayılan olarak kullanılabilir:

Provider Oturum açma uç noktası Nasıl Yapılır kılavuzu
Microsoft kimlik platformu /.auth/login/aad App Service Microsoft kimlik platformu oturum açma
Facebook /.auth/login/facebook App Service Facebook oturumu açma
Google /.auth/login/google App Service Google oturum açma bilgileri
Twitter /.auth/login/twitter App Service Twitter oturumu açma
GitHub /.auth/login/github App Service GitHub oturum açma
Apple ile oturum açma /.auth/login/apple Apple oturum açma bilgileriyle App Service Oturum Açma (Önizleme)
Herhangi bir OpenID Bağlan sağlayıcısı /.auth/login/<providerName> App Service OpenID Bağlan 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

Bu özelliğin 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 requireHttps ayarı kullanarak bunu devre dışı bırakabilirsiniz. Ancak, HTTPS'ye bağlı kalmanızı öneririz ve güvenli olmayan HTTP bağlantıları üzerinden hiçbir güvenlik belirtecinin iletilmediğinden emin olmanız gerekir.

App Service, site içeriğinize ve API'lerinize erişimi kısıtlayarak veya kısıtlamadan kimlik doğrulaması için kullanılabilir. Erişim kısıtlamaları web uygulamanızın Kimlik Doğrulama>ayarları bölümünde ayarlanabilir. Uygulama erişimini yalnızca kimliği doğrulanmış kullanıcılarla kısıtlamak için, yapılandırılmış kimlik sağlayıcılarından biriyle oturum açmak üzere istek kimliği doğrulanmadığında gerçekleştirilen eylem'i ayarlayın. Kimlik doğrulaması yapmak ancak erişimi kısıtlamamak için, isteğin kimliği doğrulanmadığında gerçekleştirecek Eylem'i "Anonim 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 akışı

Yetkilendirme davranışı

Belirteç deposu

Günlüğe kaydetme ve izleme

Özellik mimarisi

Kimlik doğrulama ve yetkilendirme ara yazılımı bileşeni, platformda uygulamanızla aynı VM üzerinde çalışan bir özelliktir. Etkinleştirildiğinde, gelen her HTTP isteği uygulamanız tarafından işlenmeden önce bu istekten geçer.

Dağıtılan siteye trafiğe izin vermeden önce kimlik sağlayıcılarıyla etkileşim kuran site korumalı alanında bir işlem tarafından kesilen istekleri 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ılmış kimlik sağlayıcıları tarafından verilen OAuth belirteçlerini doğrular, depolar ve yeniler
  • Kimliği doğrulanmış oturumu yönetir
  • KIMLIK bilgilerini HTTP isteği üst bilgilerine ekler

Modül, uygulama kodunuzdan ayrı olarak çalışır ve Azure Resource Manager ayarları kullanılarak veya bir yapılandırma dosyası kullanılarak yapılandırılabilir. 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ştirildiğinde, gelen her HTTP isteği uygulamanız tarafından işlenmeden önce 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. Büyükelçi deseni olarak bilinen özellikleri kullanarak, Windows'takine benzer işlevleri gerçekleştirmek için gelen trafikle etkileşim kurar. İş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 aşağıda açıklandığı gibi istek üst bilgileri kullanılarak geçirilir.

Kimlik doğrulama akışı

Kimlik doğrulama akışı tüm sağlayıcılar için aynıdır, ancak sağlayıcının SDK'sıyla oturum açmak isteyip istemediğinize bağlı olarak değişir:

  • Sağlayıcı SDK'sı olmadan: Uygulama, App Service'te federasyon oturum açma temsilcilerini temsil eder. Bu durum genellikle sağlayıcının oturum açma sayfasını kullanıcıya sunabilen tarayıcı uygulamaları için geçerlidir. 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 ve ardından doğrulama için kimlik doğrulama belirtecini App Service'e gönderir. Bu durum genellikle tarayıcısız uygulamalarda geçerlidir ve sağlayıcının oturum açma sayfasını kullanıcıya sunmaz. 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ıların oturum açmasını sağlayan yerel mobil uygulamalar için de geçerlidir.

App Service'teki güvenilir bir tarayıcı uygulamasından App Service veya Azure İşlevleri'daki başka bir REST API'ye yapılan çağrıların kimliği, sunucu tarafından yönlendirilen akış kullanılarak doğrulanabilir. Daha fazla bilgi için bkz . Oturum açma ve oturum kapatmaları ö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. Oturum açma İstemciyi öğesine /.auth/login/<provider>yönlendirir. İstemci kodu, kullanıcıyı doğrudan sağlayıcının SDK'sıyla imzalar ve bir kimlik doğrulama belirteci alır. Bilgi için sağlayıcının belgelerine bakın.
2. Kimlik doğrulaması sonrası Sağlayıcı istemcisini öğesine /.auth/login/<provider>/callbackyönlendirir. İstemci kodu doğrulama için belirteci sağlayıcıdan adresine /.auth/login/<provider> postalar.
3. Kimliği doğrulanmış oturum oluşturma App Service yanıta kimliği doğrulanmış tanımlama bilgisi ekler. App Service, istemci koduna kendi kimlik doğrulama belirtecini döndürür.
4. Kimliği doğrulanmış içerik sunma İstemci, sonraki isteklerde kimlik doğrulama tanımlama bilgisini içerir (tarayıcı tarafından otomatik olarak işlenir). İstemci kodu, kimlik doğrulama belirtecini üst bilgide X-ZUMO-AUTH sunar.

İstemci tarayıcıları için App Service kimliği doğrulanmamış tüm kullanıcıları otomatik olarak öğesine /.auth/login/<provider>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ışı

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

Azure portalında App Service'i gelen isteğin kimliği doğrulanmadığında bir dizi davranışla yapılandırabilirsiniz. Aşağıdaki başlıklarda seçenekler açıklanmaktadır.

Restric erişimi

  • 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 doğrulama bilgilerini de geçirir.

    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 gelen kimliği doğrulanmamış trafiği reddeder. Belirli bir eylem, Kimliği Doğrulanmamış istekler bölümünde belirtilir.

    Bu seçenekle, uygulamanıza herhangi bir kimlik doğrulama kodu yazmanız gerekmez. Role özgü yetkilendirme gibi daha hassas yetkilendirme, kullanıcının talepleri incelenerek işlenebilir (bkz . Kullanıcı taleplerine erişme).

    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.

    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.

Kimliği doğrulanmamış istekler

  • HTTP 302 Bulundu yeniden yönlendirme: Web siteleri için önerilen Yeniden yönlendirme eylemi yapılandırılan kimlik sağlayıcılarından birine. Böyle durumlarda, seçtiğiniz sağlayıcı için bir tarayıcı istemcisine /.auth/login/<provider> yönlendirilir.
  • HTTP 401 Yetkisiz: API'ler için önerilir Anonim istek yerel bir mobil uygulamadan geliyorsa, döndürülen yanıt bir HTTP 401 Unauthorizedolur. Ayrıca reddetmeyi tüm istekler için bir HTTP 401 Unauthorized olacak şekilde yapılandırabilirsiniz.
  • HTTP 403 Yasak Reddetmeyi tüm istekler için bir HTTP 403 Forbidden olacak şekilde yapılandırıyor.
  • HTTP 404 Bulunamadı Reddetmeyi tüm istekler için bir HTTP 404 Not found olacak şekilde yapılandırıyor.

Belirteç deposu

App Service, web uygulamalarınızın, API'lerinizin veya yerel mobil uygulamalarınızın kullanıcılarıyla ilişkili belirteçlerin deposu olan yerleşik bir belirteç deposu sağlar. 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 kullanıcı adına bu sağlayıcılardan verilere erişmesi gerekiyorsa, örneğin:

  • kimliği doğrulanmış kullanıcının Facebook zaman çizelgesine gönderme
  • Microsoft Graph API'sini kullanarak kullanıcının şirket verilerini okuma

Bu belirteçleri uygulamanızda toplamak, depolamak ve yenilemek için genellikle kod yazmanız gerekir. 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 ve yalnızca ilişkili kullanıcı tarafından erişilebilir.

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

Günlüğe kaydetme ve izleme

Uygulama günlüğünü etkinleştirirseniz, doğrudan günlük dosyalarınızda kimlik doğrulaması ve yetkilendirme izlemeleri görürsünüz. 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ü oynadığını görebilirsiniz. İzleme günlüklerinde adlı EasyAuthModule_32/64modüle başvurular arayın.

Azure Front Door kullanırken dikkat edilmesi gerekenler

Azure Front Door'un veya diğer ters proxy'lerin arkasında Easy Auth ile Azure Uygulaması Hizmeti kullanılırken, birkaç ek noktanın dikkate alınması gerekir.

  1. Kimlik doğrulaması iş akışı için Önbelleğe Alma devre dışı bırakma

    Kimlik doğrulaması ve yetkilendirmeyle ilgili sayfalarda önbelleğe almayı devre dışı bırakmak üzere Azure Front Door'da kuralları yapılandırma hakkında daha fazla bilgi edinmek için bkz . Kimlik doğrulaması iş akışı için önbelleği devre dışı bırakma.

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

    App Service genellikle Azure Front Door aracılığıyla kullanıma sunulduğunda doğrudan erişilemez. Bu, örneğin Azure Front Door Premium'daki Özel Bağlantı aracılığıyla App Service'i kullanıma sunarak önlenebilir. Kimlik doğrulama iş akışının trafiği doğrudan App Service'e yeniden yönlendirmesini önlemek için, uygulamayı uygulamasına yeniden https://<front-door-endpoint>/.auth/login/<provider>/callbackyönlendirecek şekilde yapılandırmak önemlidir.

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

    Bazı yapılandırmalarda App Service, Front Door FQDN yerine yeniden yönlendirme URI'si olarak App Service FQDN'sini kullanıyor. Bu, istemci Front Door yerine App Service'e yeniden yönlendirildiğinde bir soruna yol açar. Bunu değiştirmek için, forwardProxy App Service'in Azure Front Door tarafından ayarlanan üst bilgiye uygun olmasını sağlamak için ayarın X-Forwarded-Host olarak ayarlanması Standard gerekir.

    Azure Uygulaması lication Gateway veya 3. taraf ürünler gibi diğer ters proxy'ler farklı üst bilgiler kullanabilir ve farklı bir forwardProxy ayarına ihtiyaç duyabilir.

    Bu yapılandırma bugün Azure portalı üzerinden yapılamaz ve üzerinden az restyapılması gerekir:

    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

    Şunu ara:

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

    ve Azure convention Front Door tarafından kullanılan üst bilgisine uygun olarak Standard ayarlandığından X-Forwarded-Host 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

Diğer kaynaklar

Örnekler: