Skip to content

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

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

طرق المصادقة

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

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

كيف يعمل

  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 SirrChat: ${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
sirrchatd user create \
  --username [email protected] \
  --password secretpassword

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

TOTP

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

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

تمكين MFA

bash
sirrchatd mfa enable --user [email protected]

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

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

toml
[auth.mfa.webauthn]
enabled = true
rp_name = "SirrChat 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
sirrchatd 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.