Aracılığıyla paylaş


Azure App Service'te OAuth belirteçlerini yönetme

Bu makalede, Azure App Service'te yerleşik kimlik doğrulaması ve yetkilendirme için OAuth belirteçlerini yönetme adımları gösterilmektedir.

Uygulama kodundaki belirteçleri al.

Azure App Service, sağlayıcıya özgü belirteçlerinizi istek üst bilgisine ekler, böylece bunlara kolayca erişebilirsiniz. Sağlayıcıya özgü belirteçleri almak için uygulama için belirteç deposu etkinleştirilmelidir.

İstemci kodunuzdan mobil uygulama veya tarayıcı içi JavaScript gibi bir HTTP GET isteği /.auth/me gönderin. Döndürülen JSON, sağlayıcıya özgü belirteçlere sahiptir.

Not

Erişim belirteçleri sağlayıcı kaynaklarına erişmeye yöneliktir, bu nedenle yalnızca sağlayıcınızı bir istemci gizli dizisiyle yapılandırdığınızda bulunur.

Aşağıdaki tabloda, birkaç App Service yerleşik sağlayıcısı için OAuth belirteci üst bilgisi adları listeleniyor:

Sağlayıcı Başlık adları
Microsoft Entra X-MS-TOKEN-AAD-ID-TOKEN
X-MS-TOKEN-AAD-ACCESS-TOKEN
X-MS-TOKEN-AAD-EXPIRES-ON
X-MS-TOKEN-AAD-REFRESH-TOKEN
Facebook X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN
X-MS-TOKEN-FACEBOOK-EXPIRES-ON
Google X-MS-TOKEN-GOOGLE-ID-TOKEN
X-MS-TOKEN-GOOGLE-ACCESS-TOKEN
X-MS-TOKEN-GOOGLE-EXPIRES-ON
X-MS-TOKEN-GOOGLE-REFRESH-TOKEN
X X-MS-TOKEN-TWITTER-ACCESS-TOKEN
X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET

Not

Farklı dil çerçeveleri bu üst bilgileri uygulama koduna küçük harf veya başlık büyük/küçük harf gibi farklı biçimlerde sunabilir.

Kimlik doğrulama belirteçlerini yenileme

Aşağıdaki bilgiler sağlayıcı belirteçlerini ifade eder. Oturum belirteçleri için bkz. Oturum belirteci sona erme müsaade süresini uzatma.

Sağlayıcınızın erişim belirtecinin süresi dolarsa, bu belirteci yeniden kullanabilmek için önce kullanıcının kimliğini yeniden doğrulamanız gerekir. GET çağrısı yaparak uygulamanızın /.auth/refresh uç noktasına belirteç süresinin dolmasını önleyebilirsiniz.

Erişim belirtecinizi istediğiniz zaman yenilemek için herhangi bir dilde arama /.auth/refresh yapın. Aşağıdaki kod parçacığı, bir JavaScript istemcisinden erişim belirteçlerinizi yenilemek için jQuery kullanır.

function refreshTokens() {
  let refreshUrl = "/.auth/refresh";
  $.ajax(refreshUrl) .done(function() {
    console.log("Token refresh completed successfully.");
  }) .fail(function() {
    console.log("Token refresh failed. See application logs for details.");
  });
}

Çağrıldığında App Service, kimliği doğrulanmış kullanıcının belirteç deposundaki erişim belirteçlerini otomatik olarak yeniler. Sonraki token istekleri yenilenmiş tokenleri alır. Uygulama kodunda belirteçleri alma başlığı altında listelenen üst bilgileri kullanarak belirteçlerin yenileme belirteçlerini ve son kullanma süresini görebilirsiniz.

Not

Uygulamanıza verdiği izinleri bir kullanıcı iptal ederse, /.auth/me çağrınız 403 Forbidden yanıtıyla başarısız olabilir. Hataları tanılamak için, ayrıntılar için uygulama günlüklerinizi denetleyin.

Sağlayıcıları yenileme belirteçleri sağlayacak şekilde yapılandırma

Belirteç yenilemenin çalışması için belirteç deposunun sağlayıcınızdan yenileme belirteçleri içermesi gerekir. Her sağlayıcı, yenileme belirteçlerini nasıl edineceklerini belgelemektedir. Aşağıdaki tabloda kısa bir özet sunulmaktadır:

Sağlayıcı Belirteçleri yenileme
Microsoft Bilişim Sistemleri Yenileme belirteçleri sağlamak için Microsoft Entra sağlayıcısını yapılandırma makalesindeki yordamı izleyin.
Facebook Yenileme belirteçleri sağlamaz. Uzun süreli belirteçler 60 gün sonra sona erer. Daha fazla bilgi için bkz. Long-Lived Access Tokens.
Google API çağrınıza /.auth/login/google bir access_type=offline sorgu dizesi parametresi ekleyin. Daha fazla bilgi için bkz . Google Yenileme Belirteçleri.
X Erişim belirteçlerinin süresi dolmaz. Daha fazla bilgi için bkz. OAuth SSS.

Microsoft Entra sağlayıcısını yenileme belirteçleri sağlayacak şekilde yapılandırma

  1. Azure portalında API Playground (önizleme) bölümüne gidin ve gerekirse Yeni istek'i seçin.
  2. BURAYA API sürümü de dahil olmak üzere ARM göreli yolunu girin alanına aşağıdaki dizeyi girin ve yer tutucuları abonelik kimliğiniz, kaynak grubu adınız ve uygulama adınızla değiştirin:
    subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01
  3. Yürüt'ü seçin.
  4. Sol üst köşedeki PUT'yı ve İstek gövdesi sekmesini seçin.
  5. GET Yanıt gövdesi alanından yanıt içeriğini kopyalayın ve İstek gövdesi sekmesine yapıştırın.
  6. Kodda "identityProviders":>"azureActiveDirectory":>"login": bölümünü bulun ve aşağıdaki satırı ekleyin:
    "loginParameters": ["scope=openid profile email offline_access"]
  7. Yürüt'ü seçin. Yanıt gövdesi alanında değişiklikleriniz gösterilir.

Offline_access , yenileme belirteçleri sağlayan kapsamdır. App Service varsayılan olarak diğer kapsamları zaten istemektedir. Daha fazla bilgi için bkz. OpenID Connect Kapsamları ve Web Uygulamaları - Güncelleştirme Kimlik Doğrulama Ayarları V2.

Oturum belirteci süre sonu yetkisiz kullanım süresini uzatma

Kimliği doğrulanmış oturumun süresi 8 saat sonra dolar ve 72 saatlik varsayılan yetkisiz kullanım süresi devam eder. Bu yetkisiz kullanım süresi içinde, kullanıcıyı yeniden kimlik doğrulaması yapmadan App Service ile oturum belirtecini yenileyebilirsiniz. Oturum belirteciniz geçersiz hale geldiğinde /.auth/refresh çağrısını yapabilir ve belirtecin süresinin dolmasını kendiniz takip etmeniz gerekmez.

72 saatlik yetkisiz kullanım süresi aşıldığında, kullanıcının geçerli bir oturum belirteci almak için yeniden oturum açması gerekir. 72 saatten daha uzun bir süre sonu penceresine ihtiyacınız varsa, bunu uzatabilirsiniz, ancak bir kimlik doğrulama belirteci sızdırılırsa veya çalınırsa süre sonunun uzun bir süre uzatılması önemli güvenlik etkilerine neden olabilir. Ayarı varsayılan 72 saatte bırakmak veya uzantı süresini mümkün olan en küçük değere ayarlamak en iyisidir.

Varsayılan süre sonu penceresini genişletmek için Azure Cloud Shell'de aşağıdaki Azure CLI komutunu çalıştırın:

az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

Not

Tolerans süresi yalnızca App Service kimlik doğrulanmış oturumu için geçerlidir, kimlik sağlayıcılarının erişim belirteçleri için geçerli değildir. Süresi dolan sağlayıcı belirteçleri için tanınan ek süre yok.