التحقق من مطالبات رمز ID القياسية
تعلّموا خطوات التحقق الإلزامية من مطالبات iss وaud وexp وiat وnonce في رمز ID الخاص بـ OpenID Connect.
التحقق من مطالبات رمز ID القياسية درس مجاني في OAuth2 & OpenID Connect Deep Dive على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في OAuth2 & OpenID Connect Deep Dive، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة OAuth2 & OpenID Connect Deep Dive 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Signature Is Not Enough
Verifying an ID token's signature proves it came from the provider, but you must also validate its claims to ensure it was meant for you, right now, and is still valid. A valid signature on a token meant for another app is still dangerous.
Validate iss (Issuer)
The iss claim must exactly equal the issuer identifier of your trusted provider, as published in its discovery document. Reject anything else.
if (claims.iss !== 'https://op.example.com') reject();Validate aud (Audience)
The aud claim must contain your client_id. If aud is an array with multiple values, an azp (authorized party) claim must be present and equal your client_id.
const auds = Array.isArray(claims.aud) ? claims.aud : [claims.aud];
if (!auds.includes(MY_CLIENT_ID)) reject();Validate exp (Expiration)
The exp claim is a Unix timestamp. The current time must be before exp. Reject expired tokens; allow a small clock skew (a few minutes) at most.
const now = Math.floor(Date.now() / 1000);
if (now >= claims.exp) reject('expired');Validate iat (Issued At)
The iat claim says when the token was issued. You can reject tokens that are unreasonably old, and use iat to enforce freshness policies.
if (now - claims.iat > MAX_AGE_SECONDS) reject('too old');Validate nonce
If you sent a nonce in the authentication request, the token's nonce must equal the value you stored. This blocks replay.
if (claims.nonce !== session.nonce) reject('nonce mismatch');Check azp When Present
The azp (authorized party) claim identifies which client the token was issued to when there are multiple audiences. If present, it must match your client_id.
auth_time and max_age
If you requested max_age or auth_time is essential, verify the auth_time claim shows the user authenticated recently enough; otherwise force re-authentication.
Order of Operations
A safe sequence:
- Decode and verify the signature (correct alg + key).
- Validate iss, aud/azp.
- Validate exp, iat (and auth_time if needed).
- Validate nonce.
Only after all pass do you trust the identity.
A Combined Check
Bringing the claim validations together:
function validateClaims(c, cfg, now) {
if (c.iss !== cfg.issuer) throw 'bad iss';
const auds = [].concat(c.aud);
if (!auds.includes(cfg.clientId)) throw 'bad aud';
if (now >= c.exp) throw 'expired';
if (c.nonce !== cfg.nonce) throw 'bad nonce';
return true;
}Use a Vetted Library
Hand-rolling JWT validation invites subtle bugs (alg confusion, skew handling). Prefer a well-maintained OIDC/JWT library and only configure the policy; let it enforce signature and claim checks.
Quick Check
Check your claim-validation knowledge.
Recap
Validating ID token claims goes beyond the signature:
issmust match the trusted issuer;audmust include your client_id.exp/iatenforce validity and freshness (allow small skew).nonceblocks replay; checkazpwith multiple audiences.- Prefer a vetted library over hand-rolled checks.
الأسئلة الشائعة
هل درس «التحقق من مطالبات رمز ID القياسية» مجاني؟
نعم — نص درس «التحقق من مطالبات رمز ID القياسية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة OAuth2 & OpenID Connect Deep Dive، انتقل إلى CoddyKit PRO. تتضمن دورة OAuth2 & OpenID Connect Deep Dive 4 دروس في المجموع.
ماذا ستتعلم في «التحقق من مطالبات رمز ID القياسية»؟
تعلّموا خطوات التحقق الإلزامية من مطالبات iss وaud وexp وiat وnonce في رمز ID الخاص بـ OpenID Connect. تتمرن على OAuth2 & OpenID Connect Deep Dive مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ OAuth2 & OpenID Connect Deep Dive؟
لا تُشترط خبرة سابقة. OAuth2 & OpenID Connect Deep Dive على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «التحقق من مطالبات رمز ID القياسية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس OAuth2 & OpenID Connect Deep Dive هذا؟
نعم. كل درس في OAuth2 & OpenID Connect Deep Dive يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية رمز ID وتوقيعه
- JWS ومجموعات JWK
- إلغاء الرموز والاستبطان
- التحقق من مطالبات رمز ID القياسية