الأمان 2 دقيقة للقراءة 1,407 مشاهدات

تطبيق OAuth 2.0 وOpenID Connect في التطبيقات الحديثة

دليل شامل لتطبيق OAuth 2.0 وOpenID Connect للمصادقة الآمنة في تطبيقات الويب والهاتف.

OAuth authentication

OAuth 2.0 و OpenID Connect

طبّق تدفّقات مصادقة آمنة للتطبيقات الحديثة.

فهم التدفّقات

  • رمز التفويض (Authorization Code): الأفضل لتطبيقات الخادم
  • PKCE: لتطبيقات الصفحة الواحدة والجوال
  • بيانات اعتماد العميل (Client Credentials): من آلة إلى آلة

تدفّق رمز التفويض مع PKCE

// Generate code verifier and challenge
function generatePKCE() {
    const verifier = crypto.randomBytes(32).toString('base64url');
    const challenge = crypto
        .createHash('sha256')
        .update(verifier)
        .digest('base64url');
    return { verifier, challenge };
}

// Step 1: Redirect to authorization server
const authUrl = new URL('https://auth.example.com/authorize');
authUrl.searchParams.set('client_id', CLIENT_ID);
authUrl.searchParams.set('redirect_uri', REDIRECT_URI);
authUrl.searchParams.set('response_type', 'code');
authUrl.searchParams.set('scope', 'openid profile email');
authUrl.searchParams.set('code_challenge', challenge);
authUrl.searchParams.set('code_challenge_method', 'S256');

تبادل الرموز (Token Exchange)

// Step 2: Exchange code for tokens
const response = await fetch('https://auth.example.com/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
        grant_type: 'authorization_code',
        client_id: CLIENT_ID,
        code: authorizationCode,
        redirect_uri: REDIRECT_URI,
        code_verifier: verifier,
    }),
});

const { access_token, id_token, refresh_token } = await response.json();

التحقّق من رموز الهوية (ID Tokens)

import jwt from 'jsonwebtoken';
import jwksClient from 'jwks-rsa';

const client = jwksClient({
    jwksUri: 'https://auth.example.com/.well-known/jwks.json'
});

const decoded = jwt.verify(id_token, getKey, {
    audience: CLIENT_ID,
    issuer: 'https://auth.example.com',
});

تحقّق دائماً من الرموز على الخادم واستخدم HTTPS لجميع اتصالات OAuth.

مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.