تنظیم Basic Authentication در آپاچی با استفاده از .htaccess

تنظیم Basic Authentication در آپاچی با استفاده از .htaccess

htaccess مخفف عبارت hypertext access،  فایل تنظیمات  دایرکتوری در آپاچی به صورت پیش فرض هست. وقتی روی وب سرور بخواهیم یک دایرکتوری خاص را امن کنیم، می توانیم از .htaccess استفاده می کنیم. رایج ترین روش هم گذاشتن احراز هویت برای کاربر روی برخی از صفحه ها هست. 

در این مقاله می خواهم به شما نشان دهم چطور تنظیمات احراز هویت در آپاچی را انجام دهید. من این تنظیمات را روی سرور دبیان انجام داده ام. همچنین باید با یک ابزار کامند لاین به سرورمان وصل شویم. من از putty برای این کار استفاده می کنم. 

نکته: لطفا با دسترسی root، دستور ها را اجرا کنید. 

نحوه ی تنظیم احراز هویت در آپاچی با استفاده از .htaccess

1- یک فایل .htaccess در پوشه ای که می خواهیم، ایجاد می کنیم. با دستور زیر، این فایل را ایجاد کنید: 

touch .htaccess

با دستور زیر فایل را باز می کنیم: 

nano .htaccess

سپس محتوای زیر را در آن قرار داده (به جای مقدار /opt/web/، مسیر دایرکتوری خودتان را قرار دهید.) و ذخیره کنید: 

  AuthType Basic
  AuthName "Secure Content"
  AuthUserFile /opt/web/.htpasswd
  require valid-user
  • AuthType: نوع احراز هویت را مشخص می کند. Basic به این معنی است که هیچ رمزگذاری وجود ندارد و هش رمز عبور به صورت متن واضح یا همان clear text ارسال می شود.
  • AuthName: محتوایی است که با درخواست نام کاربری و رمز عبور در صفحه ی وب نمایش داده می شود.
  • AuthUserFile: فایلی است که اطلاعات کاربری، کاربر را ذخیره می کند.
  • require valid-user: نشان می دهد که فقط درخواست های تایید شده، می توانند صفحه را بارگیری کنند.

2- حالا باید کاربر را  در  htpasswd که  در فایل htaccess تعریف کردیم، ایجاد کنیم. می توانید کاربر و رمز عبور را به صورت متن ساده یا رمزگذاری شده md5 اضافه کنید.

افزودن رمز عبور در قالب متن ساده:

# htpasswd -c /opt/web/.htpasswd  myuser

افزودن رمز عبور با فرمت md5 crypt
 

# htpasswd -cm /opt/web/.htpasswd  myuser
  • -c: فقط برای اولین بار در هنگام ایجاد فایل .htpasswd استفاده می شود. اگر برای بار دوم از آن استفاده کنید، فایل موجود را حذف می کند و یک فایل جدید را دوباره ایجاد می کند.
  • -m : برای ذخیره رمز عبور در فرمت md5 استفاده می شود.

با وارد کردن این دستور از شما دو بار می خواهد که پسورد مورد نظر خود را وارد کنید: 

برای این که مطمئن شوید کاربر ساخته شده است دستور زیر را وارد کنید: 

# nano .htpasswd

محتوایی مانند تصویر زیر مشاهده خواهید کرد که کاربر myuser با پسورد آن نمایش داده می شود: 

مشاهده ی اطلاعات کاربر در فایل .htpasswd

3- نوبت به  پیکربندی Apache می رسد تا به احراز هویت .htaccess اجازه دهد. 

به طور پیش فرض آپاچی اجازه ی استفاده از htaccess. را نمی دهد، بنابراین ما  باید تنظیم های زیر را در فایل httpd.conf سرورمان، به روزرسانی کنیم تا احراز هویت مبتنی بر htaccess. از متغیر Allowoverride، برای تعریف این که .htaccess توسط apache خوانده می شود یا خیر، استفاده می کنیم.

From: AllowOverride none 
To: AllowOverride AuthConfig

تنظیم AuthConfig فقط به احراز هویت موجود در htaccess. اجازه می دهد، بقیه تنظیم ها (در صورت وجود) نادیده گرفته می شود. برای اجازه دادن به همه ی تنظیم های تعریف شده در فایل htaccess. از "All" به جای AuthConfig استفاده کنید. 

دقت کنید که ممکن است در سرور شما فایل  httpd.conf وجود نداشته و به جای آن فایل apache2.conf وجود داشته باشد. در مسیر /etc/apache2 می توانید آن را پیدا کنید. می توانید دستور ls را وارد کرده تا فایل کانفیگ خود را پیدا کنید. برای مثال تصویر زیر لیست فایل ها در مسیر  سرور ما را نشان می دهد و همان طور که مشاهده می کنید فایل کانفیگ ما apache2.conf است. 

دستور زیر را وارد کنید تا فایل کانفیگ باز شود: 

# nano apache2.conf

سپس به دنبال بخشی باشید که  عبارت AllowOverride  در آن جا نوشته شده است. دایرکتوری های متفاوتی ممکن است وجود داشته باشد، شما برای پوشه ی خود، کد زیر را وارد و ذخیره کنید: 

<Directory /opt/web/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order deny,allow
        Require all granted
</Directory>

نتیجه مشابه تصویر زیر خواهد شد. دایرکتوری ما /opt/web است. 

تنظیم AllowOverride

4- در مرحله ی آخر، آپاچی را دوباره راه اندازی (ریستارت)  و تنظیم ها را تست  می کنیم. فراموش نکنید که بعد از ایجاد هر نوع تغییر در فایل پیکربندی آپاچی (httpd.conf یا apache2.conf)، باید وب سرویس آپاچی را دوباره، راه اندازی کنید. برای ما که روی اوبونتو/دبیان استفاده کردیم کد زیر را اجرا می کنیم: 

# service apache2 restart
or
# /etc/init.d/apache2 restart

حال باید تست کنیم که آیا به درستی انجام شده است یا خیر.  برای این کار سعی کنید یک فایل در پوشه ی وب سایت خودتان را باز کنید، خواهید دید که از شما نام کاربری و پسورد می خواهد. می توانید این کار را کامند لاین با دستور nano انجام دهید یا یک صفحه از وب سایت را باز کنید مانند شکل زیر: 

بسیار خب، کار ما به اتمام رسیده است.  امیدوارم این مقاله برایتان مفید باشد. 

از بهترین نوشته‌های کاربران سکان آکادمی در سکان پلاس


online-support-icon