Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Container Apps, harici giriş özellikli kapsayıcı uygulamanızı en az kodla veya hiç kod olmadan güvenli hale getirmek için yerleşik kimlik doğrulama ve yetkilendirme özellikleri (bazen "Kolay Kimlik Doğrulaması" olarak adlandırılır) sağlar.
Kimlik doğrulaması ve yetkilendirme ile ilgili ayrıntılar için, seçtiğiniz sağlayıcı için aşağıdaki kılavuzlara bakın.
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 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.
Container Apps'in yerleşik kimlik doğrulama özelliği, federasyon kimlik sağlayıcılarıyla kullanıma hazır kimlik doğrulaması sağlayarak size zaman ve çaba kazandırır. Bu özellikler, uygulamanızı geliştirmeye daha fazla ve güvenlik sistemleri oluşturmaya daha az zaman odaklanmanızı sağlar.
Avantajlara şunlar dahildir:
- Azure Container Apps, çeşitli yerleşik kimlik doğrulama sağlayıcılarına erişim sağlar.
- Yerleşik kimlik doğrulama özellikleri için belirli bir dil, SDK, güvenlik uzmanlığı ve hatta yazmanız gereken kodlar gerekmez.
- Microsoft Entra ID, Facebook, Google ve X gibi birden çok sağlayıcıyla tümleştirebilirsiniz.
Not
Azure Container Apps, Azure App Service ile aynı kimlik doğrulama ve yetkilendirme sistemini kullanır. Kimlik doğrulaması ve yetkilendirme ayrıntıları hakkında daha fazla bilgi için bkz. Azure App Service ve Azure İşlevleri'nde kimlik doğrulaması ve yetkilendirme.
Azure Container Apps'in App Service arasında yetkilendirme ve kimlik doğrulaması gerçekleştirmesinde bazı farklılıklar vardır. Bu makaledeki içerikte önemli farklar ayrıntılı olarak verilmiştir.
Kimlik sağlayıcıları
Container Apps, bir üçü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:
| Sağlayıcı | Oturum açma uç noktası | Nasıl Yapılır kılavuzu |
|---|---|---|
| Microsoft kimlik platformu | /.auth/login/aad |
Microsoft kimlik platformu |
/.auth/login/facebook |
||
| GitHub | /.auth/login/github |
GitHub |
/.auth/login/google |
||
| X | /.auth/login/x |
X |
| Herhangi bir OpenID Connect sağlayıcısı | /.auth/login/<providerName> |
OpenID Connect |
Bu sağlayıcılardan birini kullandığınızda, oturum açma uç noktası sağlayıcıdan kullanıcı kimlik doğrulaması ve kimlik doğrulama belirteci doğrulaması için kullanılabilir. Kullanıcılarınıza istediğiniz sayıda sağlayıcı seçeneği sağlayabilirsiniz.
Yerleşik kimlik doğrulamasını kullanma konusunda dikkat edilmesi gerekenler
Bu özellik yalnızca HTTPS ile kullanılmalıdır. Kapsayıcı uygulamanızın giriş yapılandırmasında allowInsecure devre dışı bırakıldığından emin olun.
Site içeriğinize ve API'lerinize erişimi kısıtlayarak veya kısıtlamadan kapsayıcı uygulamanızı kimlik doğrulaması için yapılandırabilirsiniz. Uygulama erişimini yalnızca kimliği doğrulanmış kullanıcılarla kısıtlamak için Erişimi kısıtla ayarını Kimlik doğrulaması gerektir olarak ayarlayın. Kimlik doğrulaması yapmak ancak erişimi kısıtlamamak için Erişimi kısıtla ayarını Kimliği doğrulanmamış erişime izin ver olarak ayarlayın.
Varsayılan olarak, her kapsayıcı uygulaması kimlik doğrulaması için kendi benzersiz tanımlama bilgisini veya belirtecini oluşturur. Ayrıca kendi imzalama ve şifreleme anahtarlarınızı da sağlayabilirsiniz.
Özellik mimarisi
Kimlik doğrulama ve yetkilendirme ara yazılımı bileşeni, uygulamanızdaki her bir çoğaltma örneğinde sidecar kapsayıcısı olarak çalışan platformun bir özelliğidir. Etkinleştirildiğinde, uygulamanız güvenlik katmanından geçtikten sonra gelen her HTTP isteğini işler.
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
- Kimliği doğrulanmış oturumu yönetir
- Kimlik bilgilerini HTTP istek başlıklarına ekler
Kimlik doğrulama ve yetkilendirme modülü, uygulama kodunuzdan yalıtılmış ayrı bir kapsayıcıda çalışır. Güvenlik kapsayıcısı iş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 bu makalede açıklandığı gibi istek üst bilgilerinde sağlanır.
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 (sunucu tarafından yönlendirilen akış veya sunucu akışı): Uygulama, Container Apps'te federasyon oturum açma temsilcilerini verir. Yetki devri, genellikle kullanıcıya sağlayıcının oturum açma sayfasını sunan tarayıcı uygulamaları durumunda söz konusudur.
Sağlayıcı SDK'sı (istemci tarafından yönlendirilen akış veya istemci akışı) ile: Uygulama, kullanıcıları sağlayıcıda el ile imzalar ve doğrulama için kimlik doğrulama belirtecini Container Apps'e gönderir. Bu yaklaşım, sağlayıcının oturum açma sayfasını kullanıcıya sunmayan tarayıcısız uygulamalar için tipiktir. Buna bir örnek, sağlayıcının SDK’sını kullanarak kullanıcıların oturum açmasını sağlayan yerel bir mobil uygulamadır.
Container Apps'teki güvenilir bir tarayıcı uygulamasından Container Apps'teki 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çmayı ve oturumu kapatmayı özelleştirme.
Tabloda, kimlik doğrulama akışının adımları gösterilir.
| Adım | Sağlayıcı SDK'sı olmadan | Sağlayıcı SDK'sı ile |
|---|---|---|
| 1. Oturum açma | İstemciyi /.auth/login/<PROVIDER> öğesine yönlendirir. |
İstemci kodu, kullanıcıyı doğrudan sağlayıcının SDK'sını kullanarak oturum açtırır ve bir kimlik doğrulama belirteci alır. Bilgi için sağlayıcının belgelerine bakın. |
| 2. Kimlik doğrulama sonrası | Sağlayıcı, istemciyi /.auth/login/<PROVIDER>/callback öğesine yönlendirir. |
İstemci kodu, sağlayıcıdan aldığı belirteci doğrulama için /.auth/login/<PROVIDER> adresine gönderir. |
| 3. Kimliği doğrulanmış oturum oluşturma | Container Apps yanıta kimliği doğrulanmış tanımlama bilgisi ekler. | Container Apps, 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 gönderir (bu işlem tarayıcı tarafından otomatik olarak gerçekleştirilir). | İstemci kodu, kimlik doğrulama belirtecini X-ZUMO-AUTH üst bilgisinde iletir. |
Container Apps, istemci tarayıcılarında 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 kapsayıcı uygulamanızın kimlik doğrulama ayarlarını düzenleyerek gelen bir isteğin kimliği doğrulanmamışsa bunu çeşitli davranışlarla yapılandırabilirsiniz. Aşağıdaki başlıklarda seçenekler açıklanmaktadır.
Kimliği doğrulanmamış erişime izin ver: Bu seçenek, uygulama kodunuz için kimliği doğrulanmamış trafiğin yetkilendirmesini engeller. Kimliği doğrulanmış isteklerde Container Apps, kimlik doğrulama bilgilerini HTTP üst bilgileri aracılığıyla da iletir. Uygulamanız, bir istek için yetkilendirme kararları almak için üst bilgilerdeki bilgileri kullanabilir.
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. Bu reddetme, yapılandırılan kimlik sağlayıcılarından birine yeniden yönlendirme eylemi olabilir. Bu durumlarda, bir tarayıcı istemcisi seçtiğiniz sağlayıcı için
/.auth/login/<PROVIDER>adresine yönlendirilir. Anonim istek yerel bir mobil uygulamadan geliyorsa, döndürülen yanıt birHTTP 401 Unauthorizedolur. Reddetmeyi tüm istekler içinHTTP 401 UnauthorizedveyaHTTP 403 Forbiddenolacak şekilde de yapılandırabilirsiniz.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
Uygulamanıza erişimi kısıtlamak, uygulamanıza yönelik tüm istekler için geçerlidir. Bu kısıtlamalar, birçok tek sayfalı uygulamada olduğu gibi genel kullanıma açık bir web sayfası olan uygulamalar için tercih edilmeyebilir.
Not
Varsayılan olarak, Microsoft Entra kiracınızdaki tüm kullanıcılar Microsoft Entra Id'den uygulamanız için bir belirteç isteyebilir. Uygulamanıza erişimi, tanımlı kullanıcı grubuyla kısıtlamak istiyorsanız uygulamayı Microsoft Entra ID'de yapılandırabilirsiniz.
Oturum açma ve oturum kapatmayı özelleştirin
Container Apps Kimlik Doğrulaması, oturum açma ve oturumu kapatma için yerleşik uç noktalar sağlar. Özellik etkinleştirildiğinde, bu uç noktalar kapsayıcı uygulamanızda /.auth yol ön eki altında kullanılabilir.
Birden çok oturum açma sağlayıcısı kullanma
Portal yapılandırması, kullanıcılarınıza birden çok oturum açma sağlayıcısı (hem Facebook hem de X gibi) sunmak için anahtar teslimi bir yol sunmaz. Ancak, işlevselliği uygulamanıza eklemek zor değildir. Adımlar aşağıdaki şekilde özetlenmiştir:
İlk olarak, Azure portalındaki Kimlik Doğrulaması / Yetkilendirme sayfasında, etkinleştirmek istediğiniz kimlik sağlayıcısının her birini yapılandırın.
İstek kimliği doğrulanmadığında gerçekleştirilen eylem bölümünde Anonim isteklere izin ver (eylem yok) seçeneğini belirleyin.
Oturum açma sayfasında, gezinti çubuğunda veya uygulamanızın başka bir konumunda, etkinleştirdiğiniz sağlayıcıların her birine (/.auth/login/<provider>) bir oturum açma bağlantısı ekleyin. Örneğin:
<a href="/.auth/login/aad">Log in with the Microsoft Identity Platform</a>
<a href="/.auth/login/facebook">Log in with Facebook</a>
<a href="/.auth/login/google">Log in with Google</a>
<a href="/.auth/login/x">Log in with X</a>
Kullanıcı bağlantılardan birini seçtiğinde, ilgili sağlayıcıların kullanıcı arabirimi kullanıcıya görüntülenir.
Uyarı
İstemci taraflı uygulamalarda, istemcinin rota yöneticisi /.auth/login/ rotalarını yakalayarak kimlik doğrulama sidecar'ının istekleri almasını engelleyebilir. İstemci tarafı yönlendirme yapılandırmanızın sunucunun bu yolları işlemesine izin verdiğinden emin olun.
Kullanıcı oturum açma sonrasında özel bir URL'ye yeniden yönlendirmek için sorgu dizesi parametresini kullanın post_login_redirect_uri (kimlik sağlayıcısı yapılandırmanızdaki Yeniden Yönlendirme URI'si ile karıştırılmamalıdır). Örneğin, oturum açtıktan sonra kullanıcıyı /Home/Index konumuna yönlendirmek için aşağıdaki HTML kodunu kullanın:
<a href="/.auth/login/<provider>?post_login_redirect_uri=/Home/Index">Log in</a>
İstemci yönlendirmeli oturum açma
İstemci tarafından yönlendirilen bir oturum açmada uygulama, sağlayıcıya özgü bir SDK kullanarak kimlik sağlayıcısında kullanıcı oturum açar. Uygulama kodu daha sonra, http POST isteği kullanarak doğrulama için elde edilen kimlik doğrulama belirtecini Container Apps'e gönderir (bkz . Kimlik doğrulama akışı).
Sağlayıcı belirtecini doğrulamak için kapsayıcı uygulamasının önce istenen sağlayıcıyla yapılandırılması gerekir. Çalışma zamanında, kimlik doğrulama belirtecini sağlayıcınızdan aldıktan sonra, doğrulama için belirteci /.auth/login/<provider> adresine gönderin. Örneğin:
POST https://<hostname>.azurecontainerapps.io/.auth/login/aad HTTP/1.1
Content-Type: application/json
{"id_token":"<token>","access_token":"<token>"}
Belirteç biçimi sağlayıcıya göre biraz değişir. Ayrıntılar için aşağıdaki tabloya bakın:
| Sağlayıcı değeri | İstek gövdesinde zorunlu | Açıklamalar |
|---|---|---|
aad |
{"access_token":"<ACCESS_TOKEN>"} |
id_token, refresh_tokenve expires_in özellikleri isteğe bağlıdır. |
microsoftaccount |
{"access_token":"<ACCESS_TOKEN>"} veya {"authentication_token": "<TOKEN>" |
authentication_token yerine access_tokentercih edilir.
expires_in özelliği isteğe bağlıdır. Live hizmetlerinden belirteç isterken her zaman wl.basic kapsamını isteyin. |
google |
{"id_token":"<ID_TOKEN>"} |
authorization_code özelliği isteğe bağlıdır.
authorization_code değeri sağlandığında, belirteç deposuna bir erişim belirteci ve bir yenileme belirteci eklenir. Belirtildiğinde, authorization_code öğesine isteğe bağlı olarak bir redirect_uri özelliği de eşlik edebilir. |
facebook |
{"access_token":"<USER_ACCESS_TOKEN>"} |
Facebook'tan geçerli bir kullanıcı erişim belirteci kullanın. |
twitter |
{"access_token":"<ACCESS_TOKEN>", "access_token_secret":"<ACCESS_TOKEN_SECRET>"} |
|
Sağlayıcı belirteci başarıyla doğrulanırsa API, yanıt gövdesinde oturum belirteciniz olan authenticationToken öğesini döndürür.
{
"authenticationToken": "...",
"user": {
"userId": "sid:..."
}
}
Bu oturum belirtecini aldıktan sonra, HTTP isteklerinize üst bilgiyi ekleyerek X-ZUMO-AUTH korumalı uygulama kaynaklarına erişebilirsiniz. Örneğin:
GET https://<hostname>.azurecontainerapps.io/api/products/1
X-ZUMO-AUTH: <authenticationToken_value>
Oturumu kapatma
Kullanıcılar, uygulamanın /.auth/logout uç noktasına GET isteği göndererek oturumlarını kapatabilir. İstek GET aşağıdaki eylemleri gerçekleştirir:
- Geçerli oturumdaki kimlik doğrulama çerezlerini temizler.
- Mevcut kullanıcının belirteçlerini belirteç deposundan siler.
- Microsoft Entra Id ve Google için kimlik sağlayıcısında sunucu tarafı oturumu kapatma işlemi gerçekleştirir.
Bir web sayfasındaki basit bir çıkış bağlantısı şöyledir:
<a href="/.auth/logout">Sign out</a>
Varsayılan olarak, oturumun başarıyla kapatılması istemciyi /.auth/logout/done URL'sine yönlendirir. Sorgu parametresini ekleyerek post_logout_redirect_uri oturum kapatma sonrası yeniden yönlendirme sayfasını değiştirebilirsiniz. Örneğin:
GET /.auth/logout?post_logout_redirect_uri=/index.html
post_logout_redirect_uri değerini kodladığınızdan emin olun.
Tam nitelikli URL'ler kullanıldığında, URL aynı etki alanında barındırılmalıdır.
Uygulama kodunda kullanıcı taleplerine erişme
Tüm dil çerçeveleri için Container Apps, gelen belirteçteki talepleri uygulama kodunuz için kullanılabilir hale getirir. Talepler, kimliği doğrulanmış bir son kullanıcıdan veya istemci uygulamasından gelen istek üst bilgilerine eklenir. Dış isteklerin bu üst bilgileri ayarlamasına izin verilmez, bu nedenle yalnızca Container Apps tarafından ayarlanmışsa sunulur. Bazı örnek başlıklar şunları içerir:
X-MS-CLIENT-PRINCIPAL-NAMEX-MS-CLIENT-PRINCIPAL-ID
Herhangi bir dilde veya çerçevede yazılmış kod, bu üst bilgilerden ihtiyaç duyduğu bilgileri alabilir.
Uygulamanız, bu kimlik üst bilgilerine ek olarak gibi X-MS-TOKEN-AAD-ACCESS-TOKENistek üst bilgileri aracılığıyla kimlik doğrulama belirteçlerine (Microsoft Entra erişim belirteçleri gibi) erişebilir. Bu belirteçleri kullanılabilir hale getirmek için kapsayıcı uygulamanızın kimlik doğrulama ayarlarının bir parçası olarak belirteç depoyu etkinleştirmeniz gerekir. Etkinleştirildikten sonra uygulamanıza gönderilen istekler, yapılandırılan kimlik sağlayıcısına ve kimlik doğrulama akışına bağlı olarak belirteçle ilgili ek üst bilgiler içerir.
Not
Farklı dil çerçeveleri bu üst bilgileri uygulama koduna küçük harflerle veya Başlık Biçiminde gibi farklı biçimlerde sunabilir.
EasyAuth ile uç noktaların güvenliğini sağlama
Azure Container Apps kimlik doğrulaması ile uç noktaların güvenliğini sağlarken, bir uygulamayı Microsoft Entra Id'ye kaydetmeniz ve kimlik doğrulama ayarlarını yapılandırmanız gerekir.
Güvenli erişimi ayarlamak için şu adımları izleyin:
Azure AD uygulama kaydı oluşturun
az ad app create \ --display-name <APP_DISPLAY_NAME> \ --sign-in-audience AzureADMyOrg ---Uygulamanın kimlik belirteçleri vermesini etkinleştirin. Bu adım, Kolay Kimlik Doğrulaması desteği için gereklidir.
az ad app update \ --id <APPLICATION_ID> \ --enable-id-token-issuance trueEasy Auth geri çağırma için yeniden yönlendirme URI'sini ekleyin.
az ad app update \ --id <APP_ID> \ --web-redirect-uris "https://<APP-NAME>.<ENVIRONMENT-NAME>.<REGION>.azurecontainerapps.io/.auth/login/aad/callback" ---Gizli anahtar oluşturma
az ad app credential reset \ --id <APP_ID>" \ --display-name "<APP_NAME>-Secret" ---Uygulamanız için hizmet sorumlusu oluşturun.
az ad sp create --id <APP_ID> ---Kapsayıcı uygulamanızı Microsoft Entra Id kimlik doğrulamasını kullanacak şekilde yapılandırın.
Yer tutucu için sağladığınız değerin
<APP_NAME>EasyAuth ile çalışacak şekilde yapılandırdığınız uygulamanın adı olduğundan emin olun.az containerapp auth microsoft update \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --client-id <APP_ID> \ --client-secret <CLIENT_SECRET> \ --tenant-id <TENANT_ID> \ --yes
Sonraki adımlar
Kapsayıcı uygulamanızın güvenliğini sağlama hakkında ayrıntılı bilgi için aşağıdaki makalelere bakın.