كيفية استخدام مفكّك ترميز رموز OAuth
- انسخ access_token أو id_token من استجابة OAuth لديك (أو من ترويسة Authorization).
- الصقه واقرأ ملخص الرمز: النوع والمزوّد والجهة المُصدِرة والجمهور والصلاحية.
- راجع جدول النطاقات للتأكد من الصلاحيات الممنوحة فعلياً.
- استخدم جدول المطالبات لفهم الحقول الخاصة بكل مزوّد.
مزايا مفكّك ترميز رموز OAuth
- يميّز رموز الهوية ورموز الوصول ورموز تسجيل الخروج وإثباتات DPoP
- يكتشف رموز Azure AD (Entra ID) وAuth0 وKeycloak وGoogle وOkta وCognito وFirebase وApple
- يشرح قيم scope/scp والمطالبات الخاصة بكل مزوّد (tid وoid وazp وrealm_access وgty وhd…)
- يعرض الجهة المُصدِرة والجمهور والعميل والموضوع (subject) ووقت المصادقة وطرقها
- ملخص الصلاحية مع مدة العمر؛ وينبّه عند استخدام رمز هوية بوصفه رمز حامل (bearer)
- جدول كامل بالمطالبات إلى جانب JSON الخام للترويسة والحمولة
مثال على مفكّك ترميز رموز OAuth
رمز وصول Azure AD الإصدار 2.0
الإدخال:
{"aud":"api://orders","iss":"https://login.microsoftonline.com/<tenant>/v2.0","scp":"Orders.Read Orders.Write openid profile","tid":"<tenant>","oid":"<object-id>","azp":"<client-id>","ver":"2.0", …}النتيجة:
Token type: Access token · Provider: Azure AD (Microsoft Entra ID)
Audience: api://orders · Client: <client-id> · Tenant: <tenant>
Scopes: Orders.Read, Orders.Write, openid (requests an ID token), profile (basic profile claims)الأسئلة الشائعة حول مفكّك ترميز رموز OAuth
ما الفرق بين رمز الهوية ورمز الوصول؟
يخبر رمز الهوية (OpenID Connect) تطبيق العميل بهوية المستخدم وهو مخصّص للعميل وحده. أما رمز الوصول فيفوّض استدعاءات واجهة API (خادم المورد). تخمّن الأداة النوع من typ وnonce وscope والمطالبات الخاصة بالمزوّد.
رمز الوصول الخاص بي ليس JWT — هل يمكن فكّ ترميزه؟
لا. يُصدر كثير من المزوّدين (GitHub وبعض إعدادات Google وAuth0) رموزاً مبهمة ليست سوى سلاسل عشوائية. ولا يمكن تفسيرها إلا من قِبل الجهة المُصدِرة عبر نقطة نهاية لفحص الرموز (token introspection).
كيف يُكتشف المزوّد؟
من عنوان URL للجهة المُصدِرة والمطالبات المميِّزة: tid/oid لـ Azure AD (Entra ID)، وrealm_access لـ Keycloak، وgty/permissions لـ Auth0، وhd لـ Google، وuid/cid لـ Okta، وtoken_use لـ Cognito، وهكذا.
ما معنى scope وscp؟
كلاهما يسرد الصلاحيات الممنوحة للرمز. scope هو الصيغة القياسية المفصولة بمسافات (RFC 6749/8693)؛ أما scp فتستخدمه Azure AD وOkta. ويُشرح كل نطاق حيثما كان معناه معروفاً.
ملاحظات تقنية
لا يفرض OAuth 2.0 صيغة محددة للرموز، لكن معظم المزوّدين يُصدرون رموز وصول JWT وفق RFC 9068 (typ بقيمة «at+jwt» وclient_id وscope) ورموز هوية OIDC (nonce وat_hash وauth_time وamr). يعتمد اكتشاف المزوّد على مضيف الجهة المُصدِرة والمطالبات المميِّزة؛ وعندما لا يتطابق شيء، يُفكّ ترميز الرمز بالكامل مع ذلك.