#pIdentity
Kerberos SSO: تسجيل الدخول دون كلمة مرور لأجهزة الكمبيوتر في المجال وOutlook وتطبيقات البريد
باستخدام Kerberos، تسجّل أجهزة Windows على شبكة الشركة الدخول دون طلب كلمة مرور: Webmail ولوحة الإدارة عبر SPNEGO ("Sign in with Windows")، وOutlook عبر MAPI وEWS وActiveSync وAutodiscover باستخدام Negotiate، وThunderbird وتطبيقات البريد الأخرى عبر IMAP وSMTP وPOP3 وManageSieve باستخدام SASL GSSAPI. ويتحقق nextxch من التذاكر بنفسه باستخدام ملف keytab مرفوع؛ ويعمل ذلك على Linux وعلى خوادم Windows غير المنضمة إلى المجال. وعندما يعمل nextxch على جهاز عضو في المجال، يمكن استخدام حساب الجهاز بدلًا من keytab. ولا يُدعم NTLM عن قصد.
يجب أن يطابق اسم المضيف في أسماء SPN تمامًا الاسم الذي يستخدمه العملاء (مثل mail.example.com) وأن يُحلَّل عبر سجل A. بعد كل تغيير لكلمة مرور حساب الخدمة، أنشئوا ملف keytab من جديد وارفعوه؛ ويعرض "فحص Kerberos" إصدار المفتاح والتشفير لكل SPN.
Active Directory: حساب الخدمة وSPNs وملف keytab
PowerShell بصلاحيات مسؤول المجال. نفّذوا ktpass مرة واحدة لأول SPN؛ وتتشارك جميع أسماء SPN الأخرى للحساب نفسه المفتاح ذاته ولا تحتاج إلا إلى setspn.
# 1. Service account (password never expires, AES only)
New-ADUser -Name svc-nextxch -AccountPassword (Read-Host -AsSecureString) `
-Enabled $true -PasswordNeverExpires $true -KerberosEncryptionType AES256
# 2. Register the service principals (host name = name clients use)
setspn -S HTTP/mail.example.com CORP\svc-nextxch
setspn -S imap/mail.example.com CORP\svc-nextxch
setspn -S smtp/mail.example.com CORP\svc-nextxch
setspn -S pop/mail.example.com CORP\svc-nextxch
setspn -S sieve/mail.example.com CORP\svc-nextxch
# 3. Create the keytab (resets the account password)
ktpass -princ HTTP/mail.example.com@CORP.LOCAL -mapuser CORP\svc-nextxch `
-crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out nextxch.keytab
# 4. nextxch Admin > Identity sources > Kerberos
# realm CORP.LOCAL, SPNs as above, upload the keytab, "Check Kerberos"
# Machine account mode (nextxch on domain member MAILSRV, no keytab):
setspn -S HTTP/mail.example.com CORP\MAILSRV$
setspn -S imap/mail.example.com CORP\MAILSRV$
MIT Kerberos وHeimdal وFreeIPA
أنشئوا الأساسيات (Principals) وصدّروا مفاتيحها إلى ملف keytab؛ في FreeIPA: ipa service-add وipa-getkeytab.
# MIT / Heimdal
kadmin -q "addprinc -randkey HTTP/mail.firma.de@FIRMA.LOCAL"
kadmin -q "addprinc -randkey imap/mail.firma.de@FIRMA.LOCAL"
kadmin -q "addprinc -randkey smtp/mail.firma.de@FIRMA.LOCAL"
kadmin -q "ktadd -k /tmp/nextxch.keytab HTTP/mail.firma.de imap/mail.firma.de smtp/mail.firma.de"
# FreeIPA
ipa service-add HTTP/mail.firma.de
ipa service-add imap/mail.firma.de
ipa-getkeytab -s ipa.firma.local -p HTTP/mail.firma.de -k /tmp/nextxch.keytab
ipa-getkeytab -s ipa.firma.local -p imap/mail.firma.de -k /tmp/nextxch.keytab
# Test vom Client:
kinit anna && curl --negotiate -u : https://mail.firma.de/api/auth/kerberos
اختبار يدوي مع AD حقيقي
تتحقق الاختبارات الآلية من التذاكر باستخدام ملفات keytab مُولَّدة. ومع وحدة تحكم مجال حقيقية، اختبروا أيضًا على النحو التالي:
# Auf einem Domänen-PC als normaler Benutzer:
klist purge
Invoke-WebRequest https://mail.firma.de/api/auth/kerberos -UseDefaultCredentials
klist # zeigt Ticket für HTTP/mail.firma.de
# Erwartet: 200 {"ok":true,"email":"anna@firma.de"}
# IMAP mit GSSAPI (Linux-Client in der Domäne):
kinit anna@FIRMA.LOCAL
curl -v --login-options AUTH=GSSAPI --negotiate -u : imaps://mail.firma.de/INBOX
الإعدادات والقيم الافتراضية وأفضل الممارسات
| الإعداد / الموقع | الوصف | القيمة الافتراضية | أفضل ممارسة للإنتاج |
|---|---|---|---|
Keytab |
تنسيق MIT كما تكتبه ktpass وktutil وkadmin. يُخزَّن مشفرًا بحلقة مفاتيح الخادم ولا يُعرض مرة أخرى أبدًا؛ ولا تسرد صفحة الإدارة سوى principal وkvno والتشفير. | Keytab-Modus |
استخدموا AES256. تعمل مفاتيح RC4، لكن "Check Kerberos" يحذّر منها. |
Benutzerzuordnung |
يُطابَق كيان Kerberos (anna@CORP.LOCAL) عبر مصدر الهوية: userPrincipalName أو sAMAccountName أو عنوان البريد. ولا يُقبل إلا النطاق (realm) المضبوط (والنطاقات الإضافية المسموح بها). | Realm Pflicht |
أعدّوا مصدر هوية AD وزامنوه أولًا، ثم فعّلوا Kerberos. |
Browser |
لا ترسل المتصفحات تذاكر Kerberos إلا إلى عناوين الإنترانت الموثوقة. ومن دون ذلك تظهر صفحة تسجيل الدخول العادية. | Automatischer Versuch aus |
GPO "Site to Zone Assignment List": https://mail.example.com = 1 (الإنترانت). Chrome/Edge: AuthServerAllowlist، وFirefox: network.negotiate-auth.trusted-uris. |
Outlook und ActiveSync |
تعرض MAPI وEWS وAutodiscover وActiveSync "WWW-Authenticate: Negotiate" إضافةً إلى Basic. وعندها يستخدم Outlook على أجهزة الكمبيوتر المنضمة إلى النطاق تذكرة المستخدم المسجّل دخوله. | Negotiate + Basic |
في Outlook ضمن إعدادات الحساب > مزيد من الإعدادات > الأمان، أوقفوا الخيار "المطالبة دائمًا ببيانات اعتماد تسجيل الدخول". |
Mail-Programme (GSSAPI) |
يوفر IMAP وإرسال SMTP (Submission) وPOP3 وManageSieve آلية SASL GSSAPI (مع المصادقة المتبادلة، RFC 4752). Thunderbird: إعدادات الحساب > الخادم > المصادقة "Kerberos / GSSAPI". | imap/, smtp/, pop/, sieve/ |
على عملاء Linux شغّلوا kinit أولًا؛ وبعدها يعرض klist التذكرة لـ imap/mail.example.com. |