App Service kimlik doğrulamasının API ve çalışma zamanı sürümlerini yönetme

Bu makalede, App Service'te yerleşik kimlik doğrulaması ve yetkilendirmenin API ve çalışma zamanı sürümlerinin nasıl özelleştirileceği gösterilmektedir.

App Service kimlik doğrulaması için yönetim API'sinin iki sürümü vardır. V2 sürümü, Azure portalında "Kimlik Doğrulaması" deneyimi için gereklidir. Zaten V1 API'sini kullanan bir uygulama, birkaç değişiklik yapıldıktan sonra V2 sürümüne yükseltebilir. Özel olarak, gizli dizi yapılandırması yuva yapışkan uygulama ayarlarına taşınmalıdır. Bu, uygulamanız için portalın "Kimlik Doğrulaması" bölümünden otomatik olarak yapılabilir.

Yapılandırma sürümünü güncelleştirme

Uyarı

V2'ye geçiş, Azure portalı, Azure CLI ve Azure PowerShell'deki mevcut deneyimi gibi bazı istemciler aracılığıyla uygulamanız için App Service Kimlik Doğrulaması/Yetkilendirme özelliğinin yönetimini devre dışı bırakır. Bu işlem geri alınamaz.

V2 API'si, V1'de olduğu gibi microsoft hesabının ayrı bir sağlayıcı olarak oluşturulmasını veya düzenlenmesini desteklemez. Bunun yerine, hem Microsoft Entra hem de kişisel Microsoft hesaplarıyla oturum açmak için yakınsanmış Microsoft kimlik platformu kullanır. V2 API'sine geçiş yaparken, Microsoft kimlik platformu sağlayıcısını yapılandırmak için V1 Microsoft Entra yapılandırması kullanılır. V1 Microsoft Hesabı sağlayıcısı geçiş sürecinde ileriye taşınacak ve normal şekilde çalışmaya devam edecek, ancak daha yeni Microsoft kimlik platformu modeline geçmeniz gerekir. Daha fazla bilgi edinmek için bkz . Microsoft Hesabı sağlayıcısı kayıtları desteği.

Otomatik geçiş işlemi, sağlayıcı gizli dizilerini uygulama ayarlarına taşır ve yapılandırmanın geri kalanını yeni biçime dönüştürür. Otomatik geçişi kullanmak için:

  1. Portalda uygulamanıza gidin ve Kimlik doğrulaması menü seçeneğini belirleyin.
  2. Uygulama V1 modeli kullanılarak yapılandırıldıysa Bir Yükselt düğmesi görürsünüz.
  3. Onay isteminde açıklamayı gözden geçirin. Geçişi gerçekleştirmeye hazırsanız, istemde Yükselt'i seçin.

Geçişi el ile yönetme

Aşağıdaki adımlar, yukarıda belirtilen otomatik sürümü kullanmak istemiyorsanız uygulamayı V2 API'sine el ile geçirmenize olanak sağlar.

Gizli dizileri uygulama ayarlarına taşıma

  1. V1 API'sini kullanarak mevcut yapılandırmanızı alın:

    az webapp auth show -g <group_name> -n <site_name>
    

    Elde edilen JSON yükünde, yapılandırdığınız her sağlayıcı için kullanılan gizli dizi değerini not edin:

    • Microsoft Entra: clientSecret
    • Google: googleClientSecret
    • Facebook: facebookAppSecret
    • X: twitterConsumerSecret
    • Microsoft Hesabı: microsoftAccountClientSecret

    Önemli

    Gizli dizi değerleri önemli güvenlik kimlik bilgileridir ve dikkatli bir şekilde işlenmelidir. Bu değerleri paylaşmayın veya yerel makinede kalıcı hale getirmayın.

  2. Her gizli dizi değeri için yuva yapışkan uygulama ayarları oluşturun. Her uygulama ayarının adını seçebilirsiniz. Değeri önceki adımda elde ettiğiniz değerle eşleşmeli veya bu değerle oluşturduğunuz bir Key Vault gizli dizisine başvurmalıdır.

    Ayarı oluşturmak için Azure portalını kullanabilir veya her sağlayıcı için aşağıdakilerin bir çeşitlemini çalıştırabilirsiniz:

    # For Web Apps, Google example    
    az webapp config appsettings set -g <group_name> -n <site_name> --slot-settings GOOGLE_PROVIDER_AUTHENTICATION_SECRET=<value_from_previous_step>
    
    # For Azure Functions, X example
    az functionapp config appsettings set -g <group_name> -n <site_name> --slot-settings TWITTER_PROVIDER_AUTHENTICATION_SECRET=<value_from_previous_step>
    

    Not

    Bu yapılandırmanın uygulama ayarları yuva yapışkanı olarak işaretlenmelidir; bu da yuva değiştirme işlemi sırasında ortamlar arasında hareket etmemesi anlamına gelir. Bunun nedeni kimlik doğrulama yapılandırmanızın ortama bağlı olmasıdır.

  3. adlı authsettings.jsonyeni bir JSON dosyası oluşturun. Daha önce aldığınız çıkışı alın ve her gizli dizi değerini kaldırın. Gizli dizi olmadığından emin olarak kalan çıkışı dosyaya yazın. Bazı durumlarda, yapılandırmada boş dizeler içeren diziler olabilir. Bunun olmadığından emin olun microsoftAccountOAuthScopes ve varsa, bu değeri olarak nulldeğiştirin.

  4. Her sağlayıcı için daha önce oluşturduğunuz uygulama ayarı adına işaret eden bir özellik authsettings.json ekleyin:

    • Microsoft Entra: clientSecretSettingName
    • Google: googleClientSecretSettingName
    • Facebook: facebookAppSecretSettingName
    • X: twitterConsumerSecretSettingName
    • Microsoft Hesabı: microsoftAccountClientSecretSettingName

    Bu işlemden sonra örnek bir dosya aşağıdakine benzer olabilir, bu durumda yalnızca Microsoft Entra Kimliği için yapılandırılmıştır:

    {
        "id": "/subscriptions/00d563f8-5b89-4c6a-bcec-c1b9f6d607e0/resourceGroups/myresourcegroup/providers/Microsoft.Web/sites/mywebapp/config/authsettings",
        "name": "authsettings",
        "type": "Microsoft.Web/sites/config",
        "location": "Central US",
        "properties": {
            "enabled": true,
            "runtimeVersion": "~1",
            "unauthenticatedClientAction": "AllowAnonymous",
            "tokenStoreEnabled": true,
            "allowedExternalRedirectUrls": null,
            "defaultProvider": "AzureActiveDirectory",
            "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
            "clientSecret": "",
            "clientSecretSettingName": "MICROSOFT_IDENTITY_AUTHENTICATION_SECRET",
            "clientSecretCertificateThumbprint": null,
            "issuer": "https://sts.windows.net/0b2ef922-672a-4707-9643-9a5726eec524/",
            "allowedAudiences": [
                "https://mywebapp.azurewebsites.net"
            ],
            "additionalLoginParams": null,
            "isAadAutoProvisioned": true,
            "aadClaimsAuthorization": null,
            "googleClientId": null,
            "googleClientSecret": null,
            "googleClientSecretSettingName": null,
            "googleOAuthScopes": null,
            "facebookAppId": null,
            "facebookAppSecret": null,
            "facebookAppSecretSettingName": null,
            "facebookOAuthScopes": null,
            "gitHubClientId": null,
            "gitHubClientSecret": null,
            "gitHubClientSecretSettingName": null,
            "gitHubOAuthScopes": null,
            "twitterConsumerKey": null,
            "twitterConsumerSecret": null,
            "twitterConsumerSecretSettingName": null,
            "microsoftAccountClientId": null,
            "microsoftAccountClientSecret": null,
            "microsoftAccountClientSecretSettingName": null,
            "microsoftAccountOAuthScopes": null,
            "isAuthFromFile": "false"
        }   
    }
    
  5. Bu dosyayı uygulamanız için yeni Kimlik Doğrulama/Yetkilendirme yapılandırması olarak gönderin:

    az rest --method PUT --url "/subscriptions/<subscription_id>/resourceGroups/<group_name>/providers/Microsoft.Web/sites/<site_name>/config/authsettings?api-version=2020-06-01" --body @./authsettings.json
    
  6. Uygulamanızın bu hareket sonrasında hala beklendiği gibi çalıştığını doğrulayın.

  7. Önceki adımlarda kullanılan dosyayı silin.

Şimdi uygulamayı kimlik sağlayıcısı gizli dizilerini uygulama ayarları olarak depolamak için geçirdiniz.

Microsoft Hesabı sağlayıcısı kayıtları için destek

Mevcut yapılandırmanız bir Microsoft Hesabı sağlayıcısı içeriyorsa ve bir Microsoft Entra sağlayıcısı içermiyorsa, yapılandırmayı Microsoft Entra sağlayıcısına geçirip geçişi gerçekleştirebilirsiniz. Bunu yapmak için:

  1. Azure portalında Uygulama kayıtları gidin ve Microsoft Hesabı sağlayıcınızla ilişkili kaydı bulun. "Kişisel hesaptan başvurular" başlığı altında olabilir.
  2. Kaydın "Kimlik Doğrulaması" sayfasına gidin. "Yeniden yönlendirme URI'leri" altında ile biten /.auth/login/microsoftaccount/callbackbir girdi görmeniz gerekir. Bu URI'yı kopyalayın.
  3. Yeni kopyaladığınız URI ile eşleşen yeni bir URI ekleyin; bunun yerine ile bitmesini /.auth/login/aad/callbacksağlayın. Bu, kaydın App Service Kimlik Doğrulaması / Yetkilendirme yapılandırması tarafından kullanılmasına izin verir.
  4. Uygulamanızın App Service Kimlik Doğrulaması / Yetkilendirme yapılandırmasına gidin.
  5. Microsoft Hesabı sağlayıcısının yapılandırmasını toplayın.
  6. Microsoft Entra sağlayıcısını "Gelişmiş" yönetim modunu kullanarak yapılandırın ve önceki adımda topladığınız istemci kimliği ve istemci gizli anahtarı değerlerini sağlayın. Veren URL'si için kullanın <authentication-endpoint>/<tenant-id>/v2.0ve authentication-endpoint> değerini bulut ortamınızın kimlik doğrulama uç noktasıyla değiştirin <(örneğin, "https://login.microsoftonline.com" genel Microsoft Entra Id için) ayrıca tenant-id >yerine <Dizin (kiracı) kimliğinizi yazın.
  7. Yapılandırmayı kaydettikten sonra, tarayıcınızda /.auth/login/aad sitenizdeki uç noktaya gidip oturum açma akışını tamamlayarak oturum açma akışını test edin.
  8. Bu noktada yapılandırmayı üzerine başarıyla kopyalamış olmanıza rağmen mevcut Microsoft Hesabı sağlayıcısı yapılandırması devam etmektedir. Kaldırmadan önce, uygulamanızın tüm bölümlerinin oturum açma bağlantıları aracılığıyla Microsoft Entra sağlayıcısına başvurduğunu doğrulayın. Uygulamanızın tüm bölümlerinin beklendiği gibi çalıştığını doğrulayın.
  9. Microsoft Entra sağlayıcısında işlerin çalıştığını doğruladıktan sonra Microsoft Hesabı sağlayıcısı yapılandırmasını kaldırabilirsiniz.

Uyarı

Microsoft Entra uygulama kaydı için desteklenen hesap türlerini değiştirerek iki kaydı yakınsamak mümkündür. Ancak bu, Microsoft Hesabı kullanıcıları için yeni bir onay istemini zorlar ve bu kullanıcıların kimlik talepleri, özellikle yeni bir Uygulama Kimliği kullanıldığından değerlerin değiştirilmesi gibi yapı sub açısından farklı olabilir. Bu yaklaşım, tam olarak anlaşılmadığı sürece önerilmez. Bunun yerine V2 API yüzeyindeki iki kayıt için destek beklemelisiniz.

V2'ye geçme

Yukarıdaki adımlar gerçekleştirildikten sonra Azure portalında uygulamaya gidin. "Kimlik doğrulaması (önizleme)" bölümünü seçin.

Alternatif olarak, site kaynağı altındaki kaynağa karşı config/authsettingsv2 bir PUT isteğinde bulunabilirsiniz. Yükün şeması, Dosya tabanlı yapılandırmada yakalanan şemayla aynıdır.

Uygulamanızı belirli bir kimlik doğrulama çalışma zamanı sürümüne sabitleme

Kimlik doğrulamasını/yetkilendirmeyi etkinleştirdiğinizde platform ara yazılımı, özellik genel bakış bölümünde açıklandığı gibi HTTP isteği işlem hattınıza eklenir. Bu platform ara yazılımı, düzenli platform güncelleştirmelerinin bir parçası olarak yeni özellikler ve iyileştirmelerle düzenli aralıklarla güncelleştirilir. Varsayılan olarak, web veya işlev uygulamanız bu platform ara yazılımının en son sürümünde çalışır. Bu otomatik güncelleştirmeler her zaman geriye dönük olarak uyumludur. Ancak, bu otomatik güncelleştirmenin web veya işlev uygulamanız için bir çalışma zamanı sorununa neden olması durumunda, geçici olarak önceki ara yazılım sürümüne geri dönebilirsiniz. Bu makalede, bir uygulamanın kimlik doğrulama ara yazılımının belirli bir sürümüne geçici olarak nasıl sabitlendir olduğu açıklanmaktadır.

Otomatik ve el ile sürüm güncelleştirmeleri

Uygulama için bir ayar ayarlayarak uygulamanızı platform ara yazılımının belirli bir runtimeVersion sürümüne sabitleyebilirsiniz. Açıkça belirli bir sürüme sabitlemeyi seçmediğiniz sürece uygulamanız her zaman en son sürümde çalışır. Aynı anda desteklenen birkaç sürüm olacaktır. Artık desteklenmeyen geçersiz bir sürüme sabitlerseniz, uygulamanız bunun yerine en son sürümü kullanır. Her zaman en son sürümü çalıştırmak için ~1 olarak ayarlayın runtimeVersion .

Geçerli çalışma zamanı sürümünü görüntüleme ve güncelleştirme

Uygulamanız tarafından kullanılan çalışma zamanı sürümünü değiştirebilirsiniz. Yeni çalışma zamanı sürümü, uygulamayı yeniden başlattıktan sonra geçerli olmalıdır.

Geçerli çalışma zamanı sürümünü görüntüleme

Platform kimlik doğrulaması ara yazılımının geçerli sürümünü Azure CLI kullanarak veya uygulamanızdaki yerleşik sürüm HTTP uç noktalarından biri aracılığıyla görüntüleyebilirsiniz.

Azure CLI'dan

Azure CLI kullanarak az webapp auth show komutuyla geçerli ara yazılım sürümünü görüntüleyin.

az webapp auth show --name <my_app_name> \
--resource-group <my_resource_group>

Bu kodda değerini uygulamanızın adıyla değiştirin <my_app_name> . ayrıca öğesini uygulamanızın kaynak grubunun adıyla değiştirin <my_resource_group> .

ALANı CLI çıkışında görürsünüz runtimeVersion . Netlik için kesilmiş olan aşağıdaki örnek çıkışa benzer:

{
  "additionalLoginParams": null,
  "allowedAudiences": null,
    ...
  "runtimeVersion": "1.3.2",
    ...
}
Sürüm uç noktasından

Uygulamanın üzerinde çalıştığı geçerli ara yazılım sürümünü görüntülemek için bir uygulamada /.auth/version uç noktasına da erişebilirsiniz. Aşağıdaki örnek çıkışa benzer:

{
"version": "1.3.2"
}

Geçerli çalışma zamanı sürümünü güncelleştirme

Azure CLI kullanarak az webapp auth update runtimeVersion komutuyla uygulamadaki ayarı güncelleştirebilirsiniz .

az webapp auth update --name <my_app_name> \
--resource-group <my_resource_group> \
--runtime-version <version>

değerini uygulamanızın adıyla değiştirin <my_app_name> . ayrıca öğesini uygulamanızın kaynak grubunun adıyla değiştirin <my_resource_group> . Ayrıca değerini 1.x çalışma zamanının geçerli bir sürümüyle veya ~1 en son sürümle değiştirin<version>. Sabitleneceğiniz sürümü belirlemenize yardımcı olması için farklı çalışma zamanı sürümlerindeki sürüm notlarına bakın.

Önceki kod örneğinde Deneyin'i seçerek bu komutu Azure Cloud Shell'den çalıştırabilirsiniz. Oturum açmak için az login komutunu yürüttkten sonra bu komutu yürütmek için Azure CLI'yi yerel olarak da kullanabilirsiniz.

Sonraki adımlar