สนับสนุนเว็บ

ผู้เขียน หัวข้อ: คอนฟิก Apache HTTP Authentication ให้ใส่ Username, Password ก่อนเข้าเว็บ  (อ่าน 646 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

Permalink: คอนฟิก Apache HTTP Authentication ให้ใส่ Username, Password ก่อนเข้าเว็บ

17/ธ.ค./13 หัวข้อไอดี: 16040330 | ลิ้งค์หัวข้อ: /topic/16040330

ออฟไลน์ นๅยด้ามขวาน

  • ออฟไลน์
  • 49110
    30245
    64255



  • Administrator
  • *****
  • สมัครสมาชิกเมื่อ 17/07/2009
    YearsYearsYearsYearsYearsYearsYearsYears
  • กระทู้ : 49110
  • Like Post : 64255
  • Peny : 30245
  • 16

    • ดูรายละเอียด


  • เข้าใช้งานล่าสุดเมื่อ 23/ต.ค./17


คอนฟิก Apache HTTP Authentication ให้ใส่ Username, Password ก่อนเข้าเว็บ

หากต้องการปกป้องเว็บไซต์ ให้เข้าได้เฉพาะคนที่มีสิทธิ์เท่านั้น  คือต้องใส่ Username, Password ให้ถูกต้องก่อน ถึงจะเข้าหน้าเว็บไซต์ได้

วิธีหนึ่งที่คอนฟิกง่ายที่สุดคือ ใช้ HTTP Authentication ซึ่งเป็นคุณสมบัติของตัวเว็บเซิร์ฟเวอร์เอง เช่น Apache  เพียงแค่แก้ไขคอนฟิกของเว็บเซิร์ฟเวอร์เท่านั้น ไม่จำเป็นต้องเขียนโปรแกรมเพิ่มเติมแต่อย่างใด

ลองมาดูวิธีคอนฟิกทำ HTTP Basic Authentication ซึ่งเป็นการทำ HTTP Authentication แบบง่ายสุดของ Apache ที่ติดตั้งบน CentOS 6 กัน

โดยดีฟอลต์การติดตั้ง Apache หรือ rpm แพ็คเกจชื่อ httpd ที่มากับ CentOS 6 นั้น ไม่ได้เปิดการใช้งานให้ใช้ HTTP Authentication ได้

ต้องแก้ไขค่าคอนฟิก AllowOverride เพื่อเปิดการใช้งาน AuthConfig ในไฟล์ /etc/httpd/conf/httpd.conf

ดีฟอลต์การติดตั้งแพ็คเกจ httpd ใน CentOS จะเป็นค่า None ต้องแก้ไขเป็น AuthConfig
โค๊ด: [Select]
[root@cent6 ~]# vi /etc/httpd/conf/httpd.conf
...
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/html">
...
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride AuthConfig
...
</Directory>

...
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#
AccessFileName .htaccess

...

รีสตาร์ตเซอร์วิส httpd เพื่อให้คอนฟิกใหม่มีผล

โค๊ด: [Select]
[root@cent6 ~]# service httpd restart
Stopping httpd:                                  [  OK  ]
Starting httpd:                                  [  OK  ]

ขั้นต่อไปก็เลือกว่าเราต้องการจะปกป้อง url ไหนบ้าง ในเว็บไซต์  ก็สร้างไฟล์ .htaccess ในไดเร็คทอรีนั้นๆ เช่นถ้าต้องการปกป้องทั้งเว็บไซต์เลย ก็สร้างไฟล์ .htaccess ในไดเร็คทอรีที่คอนฟิกเป็น DocumentRoot  (ดีฟอลต์ของลีนุกซ์ตระกูล RedHat, CentOS คือ /var/www/html/)

[root@cent6 ~]# cd /var/www/html/

ใส่คอนฟิกต่อไปนี้ลงไปในไฟล์ .htaccess

โค๊ด: [Select]
[root@cent6 html]# vi .htaccess
AuthType Basic
AuthName "My Authorization Realm"
AuthUserFile /var/www/.htpasswd
Require valid-user

 
ไฟล์คอนฟิกนี้กำหนดว่า ถ้าจะเข้าเว็บนี้ต้องมีการตรวจสอบ Username, Password แบบ Basic Authentication กับไฟล์ /var/www/.htpasswd โดยจะเข้าเว็บได้นั้นต้องใส่ Username, Password ให้ถูกต้อง (valid-user)

สร้างไฟล์ .htpasswd ไว้สำหรับเก็บ Username, Password

ใช้คำสั่ง htpasswd ตามด้วยชื่อไฟล์ ตามด้วยชื่อ username ที่ต้องการเพิ่ม หากเป็นการสร้างไฟล์ครั้งแรกต้องระบุออปชั่น -c เพื่อเป็นการสร้างไฟล์ใหม่ด้วย

โค๊ด: [Select]
[root@cent6-dev html]# htpasswd -c /var/www/.htpasswd user1
New password:
Re-type new password:
Adding password for user user1


ตัวอย่างไฟล์ .htpasswd ที่สร้างขึ้น

โค๊ด: [Select]
[root@cent6-dev html]# cat /var/www/.htpasswd
user1:nYGkP0IzEq2oQ

 

คำแนะนำ ไฟล์ .htpasswd ไม่สมควรอยู่ภายใต้ /var/www/html/  เพราะอาจทำให้มีการเข้าถึงไฟล์นี้ได้โดยตรง

เพื่อป้องกันปัญหานี้ ดีฟอลต์คอนฟิกที่ติดตั้งมา จึงมีการป้องกันไม่ให้ดาวน์โหลดไฟล์นี้ได้โดยตรง โดยกำหนดเป็นรูปแบบ ไม่อนุญาต (Deny from all) ให้ดาวน์โหลดไฟล์ที่ชื่อไฟล์ขึ้นต้นด้วย .ht

โค๊ด: [Select]
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

ตัวอย่างการเปิดเว็บไซต์ที่มีการใส่ HTTP Authentication ไว้

เมื่อใส่ Username, Password ได้ถูกต้อง ก็สามารถเข้าสู่หน้าเว็บไซต์ได้ตามปิกติ

เมื่อมีการเปิดใช้ HTTP Authentication หากดูในล็อกไฟล์ของ Apache ฟิลด์ที่ 3 จะแสดงชื่อ username ที่ใช้ authentication ด้วย

โค๊ด: [Select]
[root@cent6-dev ~]# tail /var/log/httpd/access_log
 192.168.7.101 - user1 [13/Jul/2013:13:57:58 +0700] "GET / HTTP/1.1" 200 19 "-" "Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0"

คุณไม่สามารถมองเห็น links ได้ กรุณา.สมัครสมาชิก หรือ เข้าสู่ระบบ

 
ข้อมูลอ้างอิง
คุณไม่สามารถมองเห็น links ได้ กรุณา.สมัครสมาชิก หรือ เข้าสู่ระบบ
https://httpd.apache.org/docs/2.2/howto/auth.html



LikePost โดย 2 สมาชิก :


Permalink: Re: คอนฟิก Apache HTTP Authentication ให้ใส่ Username, Password ก่อนเข้าเว็บ

ตอบกลับ #1 29/มี.ค./14 หัวข้อไอดี: 16040330 | ลิ้งค์หัวข้อ: /topic/16040330

ออฟไลน์ vipers

  • ออฟไลน์
  • 15
    0
    3



  • Grade I
  • *
  • สมัครสมาชิกเมื่อ 29/03/2014
    YearsYearsYears
  • เพศ: ชาย
  • กระทู้ : 15
  • Like Post : 3
  • Peny : 0
  • 150201

    • ดูรายละเอียด


  • เข้าใช้งานล่าสุดเมื่อ 29/มี.ค./14


thanks

LikePost โดย 0 สมาชิก :


 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 
ร่วมขับเคลื่อนโดย