اعمل مع رموز OAuth في مصادقة Azure App Service
توضح لك هذه المقالة كيفية العمل مع رموز OAuth المميزة أثناء استخدام المصادقة والتفويض المدمجين في خدمة التطبيق .
استرداد الرموز المميزة في التعليمات البرمجية للتطبيق
من رمز الخادم الخاص بك، يتم استخدام الرموز المميزة الخاصة بالموفر في عنوان الطلب، حتى تتمكن من الوصول إليها بسهولة. يعرض الجدول التالي أسماء عناوين الرمز المميز المحتملة:
الموفر | أسماء العناوين |
---|---|
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 |
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 |
إشعار
قد تقدم أطر عمل اللغات المختلفة هذه العناوين إلى التعليمات البرمجية للتطبيق بتنسيقات مختلفة، مثل الأحرف الصغيرة أو حالة العنوان.
من التعليمات البرمجية للعميل (مثل تطبيق الأجهزة المحمولة أو JavaScript في المستعرض)، أرسل طلب HTTP GET
إلى /.auth/me
(يجب تمكين مخزن الرمز المميز ). يحتوي JSON الذي تم إرجاعه على الرموز المميزة الخاصة بالموفر.
إشعار
الرموز المميزة للوصول هي للوصول إلى موارد الموفر، لذلك فهي موجودة فقط إذا قمت بتكوين الموفر الخاص بك مع سر العميل. لمعرفة كيفية الحصول على رموز التحديث المميزة، راجع تحديث الرموز المميزة للوصول.
تحديث الرموز المميزة
عند انتهاء صلاحية الرمز المميز للوصول الخاص بالموفر (وليس الرمز المميز للجلسة)، تحتاج إلى إعادة مصادقة المستخدم قبل استخدام هذا الرمز المميز مرة أخرى. يمكنك تجنب انتهاء صلاحية الرمز المميز عن طريق استدعاء GET
إلى نقطة النهاية /.auth/refresh
من تطبيقك. عند استدعاؤها، تقوم App Service تلقائيا بتحديث رموز الوصول المميزة في مخزن الرمز المميز للمستخدم المصادق عليه. تحصل الطلبات اللاحقة للرمز المميزة بواسطة رمز التطبيق الخاص بك على الرموز المميزة المحدثة. ومع ذلك، لكي يعمل تحديث الرمز المميز، يجب أن يحتوي مخزن الرمز المميز على رموز التحديث المميزة للموفر الخاص بك. يتم توثيق طريقة الحصول على رموز التحديث المميزة من قبل كل موفر، ولكن القائمة التالية هي ملخص مختصر:
Google: إلحاق معلمة سلسلة الاستعلام
access_type=offline
إلى استدعاء/.auth/login/google
الخاص بواجهة برمجة التطبيقات. لمزيد من المعلومات، راجع الرموز المميزة لتحديث Google.Facebook: لا يوفر رموز التحديث المميزة. تنتهي صلاحية الرموز المميزة طويلة العمر في 60 يوما (راجع انتهاء صلاحية Facebook وملحق الرموز المميزة للوصول).
س: لا تنتهي صلاحية رموز الوصول المميزة (راجع الأسئلة المتداولة حول OAuth).
Microsoft: في https://resources.azure.com، قم بالخطوات التالية:
في الجزء العلوي من الصفحة، حدد Read/Write.
في المستعرض الأيسر، انتقل إلى subscriptions><subscription_name>>resourceGroups><resource_group_name>>providers>Microsoft.Web>sites><app_name>>config>authsettingsV2.
انقر فوق تحرير.
قم بتعديل الخاصية الآتية.
"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["scope=openid profile email offline_access"] } } }
انقر فوق وضع.
إشعار
النطاق الذي يمنحك رمز تحديث مميز offline_access. راجع كيف يتم استخدامه في البرنامج التعليمي: مصادقة المستخدمين وتفويضهم من طرف إلى طرف في Azure App Service . يتم طلب النطاقات الأخرى بشكل افتراضي بواسطة App Service بالفعل. للحصول على معلومات حول هذه النطاقات الافتراضية، راجع نطاقات اتصال OpenID.
بمجرد تكوين الموفر الخاص بك، يمكنك العثور على رمز التحديث ووقت انتهاء الصلاحية للرمز المميز للوصول في مخزن الرمز المميز.
لتحديث الرمز المميز للوصول الخاص بك في أي وقت، ما عليك سوى استدعاء /.auth/refresh
بأي لغة. تستخدم القصاصة البرمجية التالية jQuery لتحديث رموز الوصول المميزة من عميل JavaScript.
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.");
});
}
إذا قام مستخدم بإبطال الأذونات الممنوحة لتطبيقك، فقد يفشل استدعاءك لـ /.auth/me
وتحصل على استجابة 403 Forbidden
. لتشخيص الأخطاء، تحقق من سجلات التطبيق للحصول على التفاصيل.
تمديد فترة سماح انتهاء صلاحية الرمز المميز للجلسة
تنتهي صلاحية جلسة العمل المصادق عليها بعد 8 ساعات. بعد انتهاء صلاحية جلسة عمل مصادق عليها، هناك فترة سماح مدتها 72 ساعة بشكل افتراضي. خلال فترة السماح هذه، يسمح لك بتحديث الرمز المميز للجلسة باستخدام App Service دون إعادة مصادقة المستخدم. يمكنك فقط استدعاء /.auth/refresh
عندما يصبح الرمز المميز لجلسة العمل غير صالح، ولا تحتاج إلى تعقب انتهاء صلاحية الرمز المميز بنفسك. بمجرد انقضاء فترة السماح التي تبلغ 72 ساعة، يجب على المستخدم تسجيل الدخول مرة أخرى للحصول على رمز مميز صالح لجلسة العمل.
إذا لم تكن 72 ساعة كافية لك، فيمكنك تمديد نافذة انتهاء الصلاحية هذه. قد يكون لتمديد انتهاء الصلاحية على مدى فترة طويلة آثار أمنية كبيرة (مثل عندما يتم تسريب رمز المصادقة المميز أو سرقته). لذلك يجب تركه في 72 ساعة الافتراضية أو تعيين فترة الملحق إلى أصغر قيمة.
لتوسيع نافذة انتهاء الصلاحية الافتراضية، قم بتشغيل الأمر التالي في Cloud Shell.
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
إشعار
تنطبق فترة السماح فقط على جلسة عمل App Service المصادق عليها، وليس الرموز المميزة من موفري الهوية. لا توجد فترة سماح للرموز المميزة للموفر منتهية الصلاحية.