Skip to content

نظام المصادقة ​

يوفر SirrMesh طرق مصادقة مرنة متعددة، تدعم كل شيء من كلمات المرور التقليدية إلى توقيعات البلوكتشين الحديثة.

طرق المصادقة ​

مصادقة البلوكتشين ​

مصادقة بدون كلمة مرور باستخدام محافظ البلوكتشين.

كيف تعمل ​

  1. يوقع العميل رسالة عشوائية باستخدام المفتاح الخاص
  2. يتحقق الخادم من التوقيع ويستعيد عنوان المحفظة
  3. يتم التحقق من تطابق العنوان مع حساب المستخدم

مثال التكوين ​

toml
[auth.blockchain]
enabled = true
networks = ["ethereum", "bsc", "polygon"]

[auth.blockchain.rpc]
ethereum = "https://mainnet.infura.io/v3/YOUR-PROJECT-ID"
bsc = "https://bsc-dataseed.binance.org"
polygon = "https://polygon-rpc.com"

الشبكات المدعومة ​

  • Ethereum (ETH)
  • BNB Smart Chain (BSC)
  • Polygon (MATIC)
  • جميع السلاسل المتوافقة مع EVM

استخدام العميل ​

javascript
// إنشاء التوقيع
const message = `Login to SirrMesh: ${timestamp}`;
const signature = await web3.eth.personal.sign(message, address);

// SMTP AUTH
AUTH BLOCKCHAIN
<address>
<signature>
<message>

مصادقة LDAP ​

التكامل مع خدمات دليل LDAP للمؤسسات.

التكوين ​

toml
[auth.ldap]
enabled = true
server = "ldap://ldap.example.com:389"
bind_dn = "cn=admin,dc=example,dc=com"
bind_password = "password"
user_base = "ou=users,dc=example,dc=com"
user_filter = "(uid={username})"

Active Directory ​

toml
[auth.ldap]
server = "ldap://dc.example.com:389"
bind_dn = "cn=Administrator,cn=Users,dc=example,dc=com"
bind_password = "password"
user_base = "cn=Users,dc=example,dc=com"
user_filter = "(sAMAccountName={username})"

مصادقة PAM ​

استخدام حسابات نظام Linux للمصادقة.

التكوين ​

toml
[auth.pam]
enabled = true
service = "sirrchat"

ملف تكوين PAM ​

إنشاء /etc/pam.d/sirrchat:

auth       required     pam_unix.so
account    required     pam_unix.so

مصادقة قاعدة البيانات ​

المصادقة التقليدية باسم المستخدم وكلمة المرور.

التكوين ​

toml
[auth.database]
enabled = true
password_hash = "bcrypt"  # bcrypt، argon2، scrypt

إنشاء مستخدم ​

bash
sirrmeshd user create \
  --username [email protected] \
  --password secretpassword

المصادقة متعددة العوامل (MFA) ​

TOTP ​

كلمة مرور لمرة واحدة مبنية على الوقت.

toml
[auth.mfa]
enabled = true
issuer = "SirrMesh"

تمكين MFA ​

bash
sirrmeshd mfa enable --user [email protected]

مفاتيح الأجهزة ​

دعم مفاتيح الأجهزة FIDO2/WebAuthn.

toml
[auth.mfa.webauthn]
enabled = true
rp_name = "SirrMesh Mail Server"

بروتوكولات المصادقة ​

آليات SASL ​

آليات مصادقة SASL المدعومة:

  • PLAIN: كلمة مرور نص عادي (يتطلب TLS)
  • LOGIN: مصادقة تسجيل الدخول
  • CRAM-MD5: مصادقة التحدي والاستجابة
  • SCRAM-SHA-256: مصادقة آمنة
  • BLOCKCHAIN: مصادقة بلوكتشين مخصصة

مثال التكوين ​

toml
[auth.sasl]
mechanisms = ["PLAIN", "LOGIN", "BLOCKCHAIN"]
require_tls = true

التحكم في الوصول ​

القائمة البيضاء لـ IP ​

toml
[auth.access_control]
allowed_ips = ["192.168.1.0/24", "10.0.0.0/8"]

القائمة السوداء لـ IP ​

toml
[auth.access_control]
blocked_ips = ["203.0.113.0/24"]

القيود الجغرافية ​

toml
[auth.geo]
enabled = true
allowed_countries = ["US", "GB", "CA"]

إدارة الجلسات ​

تكوين الجلسة ​

toml
[auth.session]
# مهلة الجلسة (بالثواني)
timeout = 3600

# الحد الأقصى للجلسات المتزامنة
max_sessions = 10

# طول رمز الجلسة
token_length = 32

تخزين الجلسة ​

  • الذاكرة: سريع ولكن غير دائم
  • Redis: إدارة جلسات موزعة
  • قاعدة البيانات: تخزين دائم
toml
[auth.session.storage]
type = "redis"
redis_url = "redis://localhost:6379/0"

سياسة كلمة المرور ​

متطلبات كلمة المرور ​

toml
[auth.password_policy]
min_length = 12
require_uppercase = true
require_lowercase = true
require_digits = true
require_special = true

سجل كلمات المرور ​

toml
[auth.password_policy]
remember_count = 5  # تذكر آخر 5 كلمات مرور
expiry_days = 90    # انتهاء الصلاحية بعد 90 يومًا

ميزات الأمان ​

الحماية من القوة الغاشمة ​

toml
[auth.security]
max_attempts = 5
lockout_duration = 300  # 5 دقائق

كشف الشذوذ ​

toml
[auth.anomaly_detection]
enabled = true
alert_on_new_ip = true
alert_on_new_device = true

سجلات التدقيق ​

الأحداث المسجلة ​

  • محاولات تسجيل الدخول (نجاح/فشل)
  • تغييرات كلمة المرور
  • تغييرات حالة MFA
  • إنشاء/تدمير الجلسة

صيغة السجل ​

json
{
  "timestamp": "2025-01-15T10:30:00Z",
  "event": "login_success",
  "user": "[email protected]",
  "ip": "192.168.1.100",
  "method": "blockchain"
}

مصادقة API ​

مفاتيح API ​

bash
sirrmeshd api-key create --user [email protected]

OAuth 2.0 ​

toml
[auth.oauth]
enabled = true
provider = "custom"
client_id = "sirrchat"
client_secret = "secret"

أفضل الممارسات ​

  1. استخدم TLS دائمًا: تشفير بيانات اعتماد المصادقة أثناء النقل
  2. تمكين MFA: تحسين أمان الحساب
  3. تدوير المفاتيح بانتظام: تحديث مفاتيح API وكلمات المرور
  4. مراقبة الشذوذ: إعداد إشعارات التنبيه
  5. مبدأ أقل امتياز: منح الأذونات الضرورية فقط

الوثائق ذات الصلة:

Released under the GPL 3.0 License.