نظام المصادقة
يوفر SirrChat طرق مصادقة مرنة متعددة، تدعم كل شيء من كلمات المرور التقليدية إلى توقيعات البلوكشين الحديثة.
طرق المصادقة
مصادقة البلوكشين
مصادقة بدون كلمة مرور باستخدام محافظ البلوكشين.
كيف يعمل
- يوقع العميل رسالة عشوائية بالمفتاح الخاص
- يتحقق الخادم من التوقيع ويستعيد عنوان المحفظة
- التحقق من تطابق العنوان مع حساب المستخدم
مثال التكوين
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 user@example.com \
--password secretpasswordالمصادقة متعددة العوامل (MFA)
TOTP
كلمة مرور لمرة واحدة تعتمد على الوقت.
toml
[auth.mfa]
enabled = true
issuer = "SirrChat"تمكين MFA
bash
sirrchatd mfa enable --user user@example.comمفاتيح الأجهزة
دعم مفاتيح الأجهزة 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": "user@example.com",
"ip": "192.168.1.100",
"method": "blockchain"
}مصادقة API
مفاتيح API
bash
sirrchatd api-key create --user user@example.comOAuth 2.0
toml
[auth.oauth]
enabled = true
provider = "custom"
client_id = "sirrchat"
client_secret = "secret"أفضل الممارسات
- استخدم TLS دائمًا: قم بتشفير بيانات اعتماد المصادقة أثناء النقل
- تمكين MFA: تحسين أمان الحساب
- تدوير المفاتيح بانتظام: تحديث مفاتيح API وكلمات المرور
- مراقبة الحالات الشاذة: إعداد إشعارات التنبيه
- مبدأ أقل امتياز: منح الأذونات الضرورية فقط
الوثائق ذات الصلة: