Azure Uygulaması Hizmetinde ve Azure İşlevleri kimlik doğrulaması ve yetkilendirme
Not
1 Haziran 2024'den itibaren, yeni oluşturulan tüm App Service uygulamaları adlandırma kuralını <app-name>-<random-hash>.<region>.azurewebsites.net
kullanarak benzersiz bir varsayılan ana bilgisayar adı oluşturma seçeneğine sahip olacaktır. Mevcut uygulama adları değişmeden kalır.
Örnek: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Diğer ayrıntılar için App Service Kaynağı için Benzersiz Varsayılan Ana Bilgisayar Adı'na bakın.
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, X.
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 Entra | /.auth/login/aad |
App Service Microsoft Entra platform oturum açma bilgileri |
/.auth/login/facebook |
App Service Facebook oturumu açma | |
/.auth/login/google |
App Service Google oturum açma bilgileri | |
X | /.auth/login/x |
App Service X oturum 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 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
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 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.
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>/callback yö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.
Erişimi kısıtla
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 Unauthorized
olur. Ayrıca reddetmeyi tüm istekler için birHTTP 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/64
modüle başvurular arayın.
Siteler arası istek sahteciliği azaltma
App Service kimlik doğrulaması, aşağıdaki koşullar için istemci isteklerini inceleyerek CSRF'yi azaltır:
- Oturum tanımlama bilgisi kullanılarak kimlik doğrulaması yapılan bir POST isteğidir.
- İstek bilinen bir tarayıcıdan geldi (HTTP
User-Agent
üst bilgisi tarafından belirlendiği gibi). - HTTP
Origin
veya HTTPReferer
üst bilgisi eksik veya yeniden yönlendirme için onaylanan dış etki alanları listesinde yok. - HTTP
Origin
üst bilgisi eksik veya YAPıLANDıRıLMıŞ CORS çıkış noktaları listesinde yok.
Bir istek tüm bu koşulları karşıladığında App Service kimlik doğrulaması bunu otomatik olarak reddeder. Dış etki alanınızı Kimlik Doğrulama Düzenleme kimlik doğrulama>ayarlarına>İzin verilen dış yeniden yönlendirme URL'leri'ne yeniden yönlendirme listesine ekleyerek bu azaltma mantığına geçici çözüm sağlayabilirsiniz.
Azure Front Door kullanırken dikkat edilmesi gerekenler
Azure Front Door'un veya diğer ters proxy'lerin arkasında kimlik doğrulamasıyla Azure Uygulaması Hizmeti kullanılırken, birkaç ek şeyin de dikkate alınması gerekir.
Kimlik doğrulaması iş akışı için Front Door önbelleğini devre dışı bırakın.
Yeniden yönlendirmeler için Front Door uç noktasını kullanın.
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>/callback
yönlendirecek şekilde yapılandırmak önemlidir.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ınX-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 rest
yapı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 olarakStandard
ayarlandığındanX-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
- Nasıl Yapılır: App Service veya Azure İşlevleri uygulamanızı Microsoft Entra oturum açma bilgilerini kullanacak şekilde yapılandırma
- Oturum açma ve oturum kapatmaları özelleştirme
- OAuth belirteçleri ve oturumlarıyla çalışma
- Kullanıcı ve uygulama taleplerine erişme
- Dosya tabanlı yapılandırma
Örnekler:
- Öğretici: Azure Uygulaması Hizmetinde çalışan web uygulamanıza kimlik doğrulaması ekleme
- Öğretici: Azure Uygulaması Hizmeti'nde (Windows veya Linux) uçtan uca kullanıcıların kimliğini doğrulama ve yetkilendirme
- Azure Uygulaması Service EasyAuth 'un .NET Core tümleştirmesi (3. taraf)
- .NET Core ile çalışan Azure Uygulaması Hizmeti kimlik doğrulaması alma (3. taraf)