الدمج والتوسّع

Integrations & Extensibility

ميثاق يتكامل مع منظومة تطبيقتك المؤسسية عبر معايير مفتوحة — OIDC, SAML, LDAP, SCIM, REST API.

Google Workspace

يمكنك استخدام Google كـ Identity Provider إضافي — المستخدمون يسجلون دخولهم بحساب Google المؤسسي.

خطوات التكوين

  1. اذهب إلى Admin ConsoleIdentity Providers
  2. اختر Google من قائمة المزودين
  3. أدخل Client ID و Client Secret من Google Cloud Console
  4. فعّل Store Token إذا أردت الوصول إلى Google API
  5. اختر Sync Mode: import أو override
  6. احفظ — Google يظهر الآن كخيار تسجيل دخول

الحصول على بيانات Google

# 1. اذهب إلى: https://console.cloud.google.com/apis/credentials
# 2. أنشئ OAuth 2.0 Client ID
#    Application type: Web application
#    Authorized redirect URI:
#    https://your-methaq-server/realms/{realm}/broker/google/endpoint

# 3. سجّل القيم:
Client ID:     123456789-xxxxxxxxxxxxxxxx.apps.googleusercontent.com
Client Secret: GOCSPX-xxxxxxxxxxxxxxxxxxxxxx

تعيين الأدوار تلقائياً

# Default Roles — تُعطى لكل مستخدم يسجل دخوله بـ Google
- 默认 роль: "google-user"

# For Role mapping via Google groups:
# Identity Provider → Google → YAML config:
{
  "groupsClaim": "groups",
  "groupsJsonPath": "groups",
  "syncMode": "INHERIT"
}

# مثال: Google group "admins" → ميثاق role "admin"

Microsoft Entra ID

تكامل عميق مع Microsoft ecosystem — Azure AD, Microsoft 365, Teams, SharePoint.

خطوات التكوين

  1. اذهب إلى Azure PortalApp RegistrationsNew Registration
  2. أدخل الاسم: Methaq SSO
  3. Supported account types: Multitenant
  4. Redirect URI: https://your-methaq-server/realms/{realm}/broker/azure/endpoint
  5. من Certificates & secrets: أنشئ New client secret
  6. من API permissions: أضف openid, profile, email
  7. انسخ Application (client) ID و Directory (tenant) ID

إدخال البيانات في ميثاق

# Identity Provider → Microsoft
Import URL:
https://login.microsoftonline.com/{tenant-id}/v2.0/.well-known/openid-configuration

Client ID:      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Client Secret:  ******************** (client secret value)

# Scopes المطلوبة
Scopes: openid profile email

# Sync Mode
Sync Mode: INHERIT

GitHub OAuth

للتطبيقات التي تدعم تسجيل الدخول بحساب GitHub — شائع في أدوات المطورين.

  1. اذهب إلى GitHubSettingsDeveloper settingsOAuth Apps
  2. أنشئ New OAuth App
  3. Authorization callback URL: https://your-methaq-server/realms/{realm}/broker/github/endpoint
  4. سجّل Client ID و Client Secret
# في ميثاق:
Client ID:     Iv1.xxxxxxxxxxxxxxxx
Client Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# Scopes:
Scopes: read:user user:email

# GitHub لا يوفر groups — جميع المستخدمينgets نفس default role

REST API

Admin REST API يتيح programmatic control الكامل — إدارة المستخدمين، الأدوار، العملاء، والمجموعات.

المصادقة

# Bearer Token — استخدم access token من OIDC
curl -X GET "https://your-methaq-server/admin/realms/methaq/users"   -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI..."   -H "Content-Type: application/json"

# أو Client Credentials (machine-to-machine)
curl -X POST "https://your-methaq-server/realms/master/protocol/openid-connect/token"   -d "grant_type=client_credentials"   -d "client_id=admin-cli"   -d "client_secret=YOUR_CLIENT_SECRET"

نقاط النهاية الرئيسية

MethodEndpointالوصف
GET/admin/realms/{realm}/usersقائمة المستخدمين
POST/admin/realms/{realm}/usersإنشاء مستخدم
GET/admin/realms/{realm}/users/{id}مستخدم واحد
PUT/admin/realms/{realm}/users/{id}تعديل مستخدم
DELETE/admin/realms/{realm}/users/{id}حذف مستخدم
GET/admin/realms/{realm}/rolesقائمة الأدوار
POST/admin/realms/{realm}/users/{id}/role-mappingsتعيين أدوار
GET/admin/realms/{realm}/clientsقائمة العملاء

Webhooks

ميثاق يدعم webhooks لإرسال إشعارات فورية عند حدوث أحداث محددة — التكامل مع Slack, Teams, PagerDuty, أو أي نظام مخصص.

الأحداث المدعومة

user.created

تم إنشاء مستخدم جديد

user.updated

تم تحديث بيانات مستخدم

user.deleted

تم حذف مستخدم

login.success

تسجيل دخول ناجح

login.failure

محاولة تسجيل دخول فاشلة

role.assigned

تم تعيين دور جديد لمستخدم

تكوين Webhook

# Admin Console → Realm Settings → Webhooks
# أو REST API:

POST /admin/realms/{realm}/webhooks
Content-Type: application/json

{
  "name": "slack-alerts",
  "url": "https://hooks.slack.com/services/xxx/yyy/zzz",
  "events": ["login.failure", "user.deleted", "role.assigned"],
  "headers": {
    "Authorization": "Bearer xxxxx"
  },
  "format": "json",
  "active": true
}

مثال Payload

{
  "event": "login.failure",
  "realm": "methaq",
  "timestamp": "2026-04-24T10:30:00.000Z",
  "data": {
    "user": "johndoe",
    "ipAddress": "198.51.100.14",
    "attemptCount": 3,
    "reason": "invalid_user_credentials"
  }
}

SCIM 2.0

System for Cross-domain Identity Management (SCIM) يتيح provisioning التلقائي للمستخدمين من مزود هوية خارجي (مثل Azure AD أو Okta) إلى ميثاق.

تفعيل SCIM

# Admin Console → Realm Settings → Keys
# Enable "X509 Certificate Authentification" for SCIM client

# أنشئ عميل SCIM:
# Clients → Create client
# Client ID: scim-api
# Client Protocol: openid-connect
# Enable "Service Accounts" ON

# من Credentials: Register SCIM Auth Method

SCIM Endpoints

Base URL: https://your-methaq-server/scim/v2/{realm}

GET    /Users          # قائمة المستخدمين
POST   /Users         # إنشاء مستخدم
GET    /Users/{id}    # مستخدم واحد
PUT    /Users/{id}    # تحديث كامل
PATCH  /Users/{id}    # تحديث جزئي
DELETE /Users/{id}    # حذف مستخدم

GET    /Groups         # قائمة المجموعات
POST   /Groups         # إنشاء مجموعة

User Schema

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
  "userName": "johndoe@company.com",
  "name": {
    "givenName": "John",
    "familyName": "Doe"
  },
  "emails": [{ "value": "johndoe@company.com", "primary": true }],
  "active": true,
  "groups": [
    { "value": "engineers", "display": "Engineering Team" }
  ],
  "externalId": "azure-ad-object-id"
}