ما هي الاختلافات بين SAML و OIDC؟
في هذه المقالة، نقدم نظرة عامة على بروتوكولات SAML و OIDC، إلى جانب عمليات المصادقة النموذجية لكل منها. نقارن الاختلافات المتميزة ومميزات وعيوب كل بروتوكول. بالإضافة إلى ذلك، بناءً على سيناريوهات المستخدم المحتملة، نقدم دليلًا لاختيار بين هذين البروتوكولين.
OpenID Connect (OIDC) و Security Assertion Markup Language (SAML) هما بروتوكولات مصادقة تسمح لمقدمي الهوية (IdPs) بتنفيذ مصادقة المستخدم والتحكم في الوصول. يحدد كل بروتوكول آليته الخاصة للحفاظ على هوية المستخدمين المصدق عليهم، والتي تُستخدم بعد ذلك لمنح أو رفض الوصول إلى التطبيقات المحمية.
ما هو SAML و OIDC؟
يحافظ مقدمو الهوية على قواعد بيانات لمعلومات هوية المستخدم. يعتمد مقدمو الخدمة (SPs) على هذه المعلومات لمصادقة المستخدمين، وأحيانًا يتمكين من استخدام مصادقة واحدة عبر تطبيقات متعددة (تسجيل دخول موحد). OIDC و SAML هما معايير تحدد كيفية تدفق المعلومات المتعلقة بالهوية بين هذين الطرفين. هدفهما النهائي هو نفسه: مصادقة المستخدم. ومع ذلك، تختلف الأساليب الأساسية التي يتبعانها لتحقيق هذا الهدف.
SAML
SAML 2.0، منذ عام 2005، هو الإصدار الحالي من المعيار. يستخدم XML لتنسيق معلومات الهوية، الطلبات، والاستجابات. XML هو معيار ناضج لتنسيق ال مستندات بطريقة مفهومة من قبل البشر والآلات. لاستخدام أو استقبال المعلومات المشفرة بـ XML، يستخدم الطلبات الأساسية عبر SOAP أو HTTP. الخدمة التي تطلب معلومات الهوية تُعرف باسم مزود الخدمة (SP) كما يُعرّفها بروتوكول SAML.
قبل أن نقدم عملية المصادقة النموذجية لـ SAML، نحتاج إلى فهم العناصر التي تعتمد عليها مصادقة SAML. قبل أن يتعرف مقدم الهوية و مزود الخدمة على بعضهما البعض ويكملان عملية المصادقة، يحتاجان إلى "تبادل" المعلومات الضرورية، والتي عادة ما تُنفذ من خلال بيانات ميتا مُعدة بتنسيق XML. تتضمن المعلومات المتبادلة:
- المفاتيح العامة، مع قيام مقدم الهوية و مزود الخدمة بإنشاء أزواج مفاتيحهم الخاصة والعامة وتبادلها للتوقيع أو تشفير الاتصالات. مع التطورات في أمن الاتصالات الشبكية، تتطلب معظم السيناريوهات الآن فقط توقيع الطلبات، متجنبة خطوة التشفير.
- النقاط النهائية، تُستخدم للسماح لمزود الخدمة بإرسال طلبات المصادقة عبر SAML إلى مقدم الهوية وتلقي تصريحات SAML استجابة لطلبات المصادقة من مقدم الهوية.
- تنسيقات السمات المدعومة لدى XML، تُستخدم للسماح لمقدم الهوية بنقل المعلومات المطلوبة عن المستخدم إلى مزود الخدمة بعد إتمام المصادقة.
حالما يكون مقدم الهوية ومزود الخدمة على دراية بالمعلومات المذكورة أعلاه، يمكنهم متابعة عملية التفويض (تدفق مصادقة مستخدم النموذجي الذي يبدأ من مزود الخدمة):
OIDC
OIDC هو بروتوكول معاصر يعزز إطار عمل OAuth 2.0. يستخدم JSON-based Web Tokens (JWT) لبناء حزم البيانات. تعتبر الـ JWT معاييرًا صناعية معترف بها، وتوفر الإرشادات لتبادل ومصدر المعلومات بشكل آمن بين الكيانات. هذه المعلومات، وهي أساسًا بيانات المستخدم المشفرة، ضرورية للتحقق من الهوية وإدارتها. يستخدم OIDC بشكل رئيسي بروتوكول HTTPS الشامل لنقل البيانات.
كما هو معترف به على نطاق واسع، يدعم بروتوكول OIDC مجموعة متنوعة من التدفقات المختلفة، بما في ذلك تدفق رمز التوكين التدفق الضمني، وتدفق الهجين. في المثال التالي، سنتناول الأكثر أمانًا ونموذجيًا من بينها: تدفق رمز التوكين. هذا هو أيضًا التدفق الذي يستخدمه Logto.
الجوانب المميزة لـ OIDC و SAML
- نظرًا لتطويره الأحدث، يعتبر OIDC أكثر تأهيلًا لمصادقة التطبيقات الحديثة مقارنة بالمعيار الأقدم SAML.
- تاريخيًا، يسبق SAML OIDC وتم دمجه في العديد من الأنظمة المؤسسية المتواجد أصلاً.
- بخلاف وثائق XML الأكبر في SAML، فإن JSON-based Web Tokens الخاصة بـ OIDC أكثر ضغطًا وسهلة المعالجة للمستخدم.
- عادةً ما يكون إعداد OIDC أكثر سهولة من SAML.
- ميزة رئيسية لـ OIDC هي تعريف "الاختصاصات"، مما يسمح لمقدمي الهوية بإدارة مجموعة متنوعة من الأذونات. يمكن للتطبيقات طلب أذونات محددة من مقدمي الهوية، والتي تُمنح بعد موافقة المستخدم. يوفر هذا السمة لـ OIDC لمقدمي الهوية تحكمًا دقيقًا في الأذونات.
كيف يجب اختيار بين OIDC و SAML؟
كِلا المعياري OIDC و SAML هما أنظمة مصادقة قوية، لكل منهما نقاط قوته الفريدة. يعتمد الاختيار على المتطلبات المحددة لمؤسستك.
- من أجل نشر منصة هوية بسرعة و كفاءة، يُفضل OIDC على SAML. التوسع في OIDC أكثر بساطة، يتجنب التعامل المعقد مع XML الذي يتطلبه SAML لتحليل بيانات الميتا، معالجة طلبات المصادقة، وتحليل تصريحات SAML.
- يُعد OIDC مثاليًا لبيئات التفاعل المكثف مع واجهات برمجة التطبيقات وآليات الأذونات المتقدمة، حيث يوفر تحكمًا أكثر قدرة وكفاءة في الأذونات وتجربة أفضل للمطورين.
- عند التكامل مع أنظمة موجودة بالفعل تعتمد على SAML، يضمن اختيار SAML توافقًا أكثر سلاسة مع النظام ويقلل من الجهد المطلوب لربط بروتوكولات مختلفة.
هل هناك حلول جيدة متاحة في السوق؟
Logto، هو حل هوية شهير بين المطورين، وقد قدم مؤخرًا وظيفة Single Sign-On للمؤسسات. يقدم دعمًا لكل من بروتوكولات SAML و OIDC، جنبًا إلى جنب مع التكاملات الجاهزة لمقدمي الهوية الرئيسيين مثل Google Workspace و Microsoft Entra ID (سابقًا Azure AD). مع Logto، يمكن تجاوز التعقيدات الناتجة عن تنفيذ Single Sign-On بنفسك. خطوات تكوين بسيطة تُمكّن دعم Single Sign-On في نظام الهوية لديك، مما يتيح لك اختيار البروتوكول المناسب لتلبية احتياجات عملك.