Azure Uygulaması Hizmeti kimlik doğrulamasında OAuth belirteçleriyle çalışma
Bu makalede, App Service'te yerleşik kimlik doğrulaması ve yetkilendirmeyi kullanırken OAuth belirteçleriyle nasıl çalışabileceğiniz gösterilmektedir.
Uygulama kodunda belirteçleri alma
Sunucu kodunuzdan, sağlayıcıya özgü belirteçler istek üst bilgisine eklenir, böylece bunlara kolayca erişebilirsiniz. Aşağıdaki tabloda olası belirteç üst bilgisi adları gösterilmektedir:
Provider | Üst bilgi adları |
---|---|
Microsoft Entra Kimliği | 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 Belirteci | X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN X-MS-TOKEN-FACEBOOK-EXPIRES-ON |
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-MS-TOKEN-TWITTER-ACCESS-TOKEN X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET |
|
Dekont
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.
İstemci kodunuzdan (mobil uygulama veya tarayıcı içi JavaScript gibi) adresine bir HTTP GET
isteği gönderin (belirteç deposu etkinleştirilmelidir)./.auth/me
Döndürülen JSON, sağlayıcıya özgü belirteçlere sahiptir.
Dekont
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 anahtarıyla yapılandırdığınızda bulunur. Yenileme belirteçlerinin nasıl alındiğini görmek için bkz. Erişim belirteçlerini yenileme.
Kimlik doğrulama belirteçlerini yenileme
Sağlayıcınızın erişim belirtecinin (oturum belirtecinin değil) süresi dolduğunda, bu belirteci yeniden kullanmadan önce kullanıcının kimliğini yeniden doğrulamanız gerekir. Uygulamanızın uç noktasına çağrı GET
yaparak belirteç süresinin dolmasını /.auth/refresh
önleyebilirsiniz. Çağrıldığında App Service, kimliği doğrulanmış kullanıcının belirteç deposundaki erişim belirteçlerini otomatik olarak yeniler. Uygulama kodunuz tarafından yapılan sonraki belirteç istekleri, yenilenen belirteçleri alır. Ancak belirteç yenilemenin çalışması için belirteç deposunun sağlayıcınız için yenileme belirteçleri içermesi gerekir. Yenileme belirteçlerini alma yolu her sağlayıcı tarafından belgelenir, ancak aşağıdaki liste kısa bir özettir:
Google: API çağrınıza
/.auth/login/google
biraccess_type=offline
sorgu dizesi parametresi ekleyin. Daha fazla bilgi için bkz . Google Yenileme Belirteçleri.Facebook: Yenileme belirteçleri sağlamaz. Uzun süreli belirteçlerin süresi 60 gün içinde dolar (bkz . Facebook Süre Sonu ve Erişim Belirteçlerinin Uzantısı).
Twitter: Erişim belirteçlerinin süresi dolmaz (bkz . Twitter OAuth SSS).
Microsoft: içinde https://resources.azure.comaşağıdaki adımları uygulayın:
Sayfanın üst kısmında Okuma/Yazma'yı seçin.
Sol tarayıcıda resourceGroups>><<resource_group_name sağlayıcıları>Microsoft.Web>siteleri><app_name>>>>config>authsettingsV2 subscription_name>>aboneliklere gidin.
Düzenle'yi tıklatın.
Aşağıdaki özelliği değiştirin.
"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["scope=openid profile email offline_access"] } } }
Koy'a tıklayın.
Dekont
Size yenileme belirteci veren kapsam offline_access. Öğretici: Azure Uygulaması Hizmeti'nde uçtan uca kullanıcıların kimliğini doğrulama ve yetkilendirme bölümünde nasıl kullanıldığını öğrenin. Diğer kapsamlar app service tarafından varsayılan olarak zaten istenir. Bu varsayılan kapsamlar hakkında bilgi için bkz. OpenID Bağlan Kapsamları.
Sağlayıcınız yapılandırıldıktan sonra, belirteç deposunda yenileme belirtecini ve erişim belirtecinin son kullanma süresini bulabilirsiniz.
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.");
});
}
Bir kullanıcı uygulamanıza verilen izinleri iptal ederse, çağrısı /.auth/me
yanıtla 403 Forbidden
başarısız olabilir. Hataları tanılamak için, ayrıntılar için uygulama günlüklerinizi denetleyin.
Oturum belirteci süre sonu yetkisiz kullanım süresini uzatma
Kimliği doğrulanmış oturumun süresi 8 saat sonra dolar. Kimliği doğrulanmış oturumun süresi dolduktan sonra varsayılan olarak 72 saatlik yetkisiz kullanım süresi vardır. Bu yetkisiz kullanım süresi içinde, kullanıcının kimliğini yeniden doğrulamadan App Service ile oturum belirtecini yenilemenize izin verilir. Yalnızca oturum belirteciniz geçersiz olduğunda arayabilirsiniz /.auth/refresh
ve belirtecin süre sonunu kendiniz izlemeniz gerekmez. 72 saatlik yetkisiz kullanım süresi aşıldıktan sonra kullanıcının geçerli bir oturum belirteci almak için yeniden oturum açması gerekir.
72 saat sizin için yeterli zaman değilse, bu süre sonu penceresini genişletebilirsiniz. Süre sonunun uzun bir süre boyunca uzatılması, güvenlik açısından önemli etkilere neden olabilir (örneğin, kimlik doğrulama belirteci sızdırıldığında veya çalındığında). Bu nedenle, varsayılan 72 saat içinde bırakmanız veya uzantı süresini en küçük değere ayarlamanız gerekir.
Varsayılan süre sonu penceresini genişletmek için Cloud Shell'de aşağıdaki komutu çalıştırın.
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
Dekont
Yetkisiz kullanım süresi yalnızca App Service kimliği doğrulanmış oturumu için geçerlidir, kimlik sağlayıcılarının belirteçleri için geçerli değildir. Süresi dolan sağlayıcı belirteçleri için yetkisiz kullanım süresi yoktur.