Security Assertion Markup Language
SAML 2.0 هو معيار SSO المؤسسي الأقدم والأكثر انتشاراً — يتبادل بيانات الهوية في XML signed. المفضل في بيئات Enterprise مثل SAP, Salesforce, و Microsoft.
SAML 2.0 (OASIS Standard) هو بروتوكول SSO قائم على XML — يعتمد على trust بين Identity Provider (IdP) و Service Provider (SP). الفرق الجوهري عن OIDC:
| الميزة | SAML 2.0 | OpenID Connect |
|---|---|---|
| صيغة البيانات | XML | JSON / JWT |
| البنية | SOAP-heavy | REST-light |
| الأفضل لـ | التطبيقات المؤسسية القديمة | تطبيقات الويب والتطبيقات الحديثة |
| حجم Assertion | كبير (XML) | صغير (JWT) |
| Native browser flow | نعم (redirect/post) | نعم (redirect) |
| Support in Methaq | ✅ full | ✅ full |
يطلب المستخدم صفحة محمية على Service Provider.
GET /realms/{realm}/protocol/saml?
SAMLRequest=Base64(SAML_XML_AuthnRequest)
&RelayState=return_urlإذا لم يكن المستخدم مسجلاً، تظهر صفحة تسجيل الدخول. يتم التحقق من كلمة المرور + MFA إن وُجد.
POST /realms/{realm}/protocol/saml
Content-Type: application/x-www-form-urlencoded
SAMLResponse=Base64(SAML_Response_XML)
&RelayState=return_urlSP يتحقق من توقيع XML، يصحح audience restriction، يخرج NameID، ينشئ جلسة مستخدم محلية.
SAML Bindings تحدد كيف تنتقل رسائل SAML عبر HTTP:
| Binding | الاستخدام | كيفية النقل |
|---|---|---|
| HTTP Redirect | AuthnRequest (SP→IdP) | URL query string (GET with encoded SAML) |
| HTTP POST | SAML Response (IdP→SP) | HTML form auto-submit (POST body) |
| HTTP Artifact | بديل لـ POST | References instead of embedding |
| SOAP | STS interactions | HTTP POST with SOAP envelope |
# Methaq IdP Metadata
https://your-methaq-server/realms/{realm}/protocol/saml/descriptorهذا الـ metadata يحتوي على:
entityID: معرف كيان ميثاقKeyDescriptor: public key للتوقيعSingleSignOnService: endpoint لتسجيل الدخول (HTTP-POST binding)SingleLogoutService: endpoint لتسجيل الخروجService Provider (مثل Salesforce) يوفر metadata خاصة به. تُستورد في ميثاق:
# Admin Console path:
# Clients → Create client → Client type: SAML
# Import metadata document from SPsamlhttps://salesforce.methaq.org/app (SP Entity ID)email أو usernamehttps://salesforce.methaq.org/*# 确保 Response signed by IdP private key
# Ensure Assertion signed
# Ensure Destination matches expected URL