تفاوت Windows Authentication و SQL Server Authentication
وقتی برای اولین بار به یک نمونه (Instance) از SQL Server وصل میشوی، SSMS از تو میخواهد نوع Authentication را انتخاب کنی: Windows Authentication یا SQL Server Authentication. این انتخاب، دقیقاً مشخص میکند سرور چطور هویت تو را تأیید میکند — و انتخاب اشتباه، رایجترین علت خطای Login Failed for User است.
Windows Authentication چیست؟
در این روش، SQL Server از حساب کاربریای که هماکنون در ویندوز با آن وارد سیستم شدهای استفاده میکند. رمز عبور جداگانهای وارد نمیکنی — اعتبارسنجی بهطور کامل توسط ویندوز (یا Active Directory در محیط سازمانی) انجام میشود و SQL Server فقط بررسی میکند که آیا آن حساب ویندوزی اجازهی دسترسی دارد یا نه.
- نیازی به مدیریت رمز عبور جداگانه در SQL Server نیست.
- از سیاستهای امنیتی مرکزی Active Directory (پیچیدگی رمز، انقضا، قفلشدن) بهره میبرد.
- گزینهی پیشفرض و پیشنهادی مایکروسافت برای محیطهای سازمانی و داخل دامنه.
- محدودیت: فقط برای کاربران/سرویسهایی که عضو همان دامنهی ویندوزی هستند کاربرد دارد.
SQL Server Authentication چیست؟
در این روش، یک نامکاربری و رمز عبور کاملاً مستقل از ویندوز، مستقیم داخل خودِ SQL Server تعریف و ذخیره میشود. اعتبارسنجی توسط خودِ SQL Server انجام میگیرد، نه ویندوز.
- برای برنامهها یا کاربرانی که خارج از دامنهی ویندوزی هستند (مثلاً یک اپلیکیشن وب روی سرور دیگر یا کاربری غیر از ویندوز) ضروری است.
- باید بهصورت پیشفرض غیرفعال باشد؛ برای استفاده باید حالت سرور را روی Mixed Mode تنظیم کنی (توضیح کامل در این راهنما).
- مدیریت رمز عبور (تغییر، انقضا، پیچیدگی) مستقیماً به عهدهی خودِ SQL Server است.
مقایسهی سریع
| ویژگی | Windows Authentication | SQL Server Authentication |
|---|---|---|
| محل ذخیرهی رمز عبور | Active Directory / ویندوز | داخل خودِ SQL Server |
| مناسب برای | کاربران داخل دامنهی سازمانی | برنامهها/کاربران خارج از دامنه |
| پیشفرض فعال است؟ | بله، همیشه | خیر، باید Mixed Mode فعال شود |
| سطح امنیت پیشنهادی مایکروسافت | بالاتر (SSO و Policy مرکزی) | نیاز به مدیریت دستی رمز عبور |
| نحوهی اتصال در Connection String | Trusted_Connection=True | User Id=...;Password=... |
کدام را انتخاب کنیم؟
در عمل، بسیاری از سازمانها هر دو روش را همزمان فعال نگه میدارند (Mixed Mode) تا هم کاربران داخلی از SSO استفاده کنند و هم برنامههای بیرونی بتوانند با Login مخصوص خودشان وصل شوند.
ساخت Login با هر دو روش (T-SQL)
-- ساخت یک Login با SQL Server Authentication CREATE LOGIN ali_app WITH PASSWORD = N'Str0ngP@ssw0rd!'; -- ساخت یک Login که به یک حساب ویندوزی نگاشت میشود CREATE LOGIN [DOMAIN\ali] FROM WINDOWS;
جمعبندی
- Windows Authentication از حساب ویندوزی فعلی استفاده میکند و رمز جداگانهای نیاز ندارد.
- SQL Server Authentication نامکاربری/رمزعبور مستقلی دارد که داخل خودِ SQL Server ذخیره میشود.
- برای استفاده از روش دوم، سرور باید روی Mixed Mode تنظیم شده باشد.
برای یادگیری کامل مفاهیم Login و User، درس Logins را در دورهی SQLFarsi ببین، یا اگر با خطای اتصال روبهرو شدهای، راهنمای رفع مشکل Login Failed for User را بخوان.
سوالات متداول دربارهی این موضوع
کدام روش احراز هویت امنتر است؟
Windows Authentication معمولاً امنتر است چون رمز در SQL Server ذخیره یا ارسال نمیشود و از سیاستهای Active Directory (قفل حساب، انقضای رمز) استفاده میکند.
Mixed Mode یعنی چه؟
حالتی که SQL Server هم ورود با حساب ویندوز و هم ورود با نامکاربری/رمز مخصوص SQL Server (مثل sa) را میپذیرد.
اگر برنامهام روی سرور دیگری اجرا میشود کدام را انتخاب کنم؟
اگر هر دو سرور در یک دامنهاند، Windows Authentication با حساب سرویس بهتر است. در غیر این صورت از SQL Authentication با رمز قوی و اتصال رمزنگاریشده استفاده کن.
میخوای مفاهیم امنیت SQL Server را کامل یاد بگیری؟
فصل امنیت دورهی SQLFarsi، Login، User، Role و Permission را از پایه توضیح میدهد.
شروع فصل امنیت