Apache httpd sanal konaklarında temel kimlik doğrulama nasıl yapılandırılır?


48

Apache http kullanarak ticari erişimi yapılandırmaya çalışıyorum. Kimlik doğrulama gerektirir. Benim /etc/apache2/sites-enabled/mercurialşuna benziyor:

NameVirtualHost *:8080

<VirtualHost *:8080>
    UseCanonicalName Off
    ServerAdmin  webmaster@localhost
    AddHandler cgi-script .cgi
    ScriptAliasMatch ^(.*) /usr/lib/cgi-bin/hgwebdir.cgi/$1
</VirtualHost>

İnternette okuduğum her ders bana şu satırları eklememi söylüyor:

AuthType Basic
AuthUserFile /usr/local/etc/httpd/users

Ancak bunu yaptığımda aşağıdaki hatayı alıyorum:

# /etc/init.d/apache2 reload
Syntax error on line 8 of /etc/apache2/sites-enabled/mercurial:
AuthType not allowed here

Dağıtımım, Anahtar Teslim Linux Redmine adında özelleştirilmiş bir Ubuntu.

Yanıtlar:


73

Bunu bir Konum yönergesi içine yerleştirmelisiniz:

<VirtualHost *:8080>

<Location /> #the / has to be there, otherwise Apache startup fails
            Deny from all
            #Allow from (You may set IP here / to access without password)
            AuthUserFile /usr/local/etc/httpd/users
            AuthName authorization
            AuthType Basic
            Satisfy Any # (or all, if IPs specified and require IP + pass)
                        # any means neither ip nor pass
            require valid-user
</Location>
...
</VirtualHost>

1
bu benim için çalışmıyor. <Location /opt/mcmap/shapefiles.php> AuthType Kerberos AuthName KerberosLogin KrbServiceName HTTP/intranet.spectrumasa.com KrbMethodNegotiate On KrbMethodK5Passwd On KrbAuthRealms DOMAIN.COM Krb5KeyTab /etc/httpd/conf/intranet.keytab require valid-user Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all SetOutputFilter DEFLATE </Location>
shorif2000

1
Apache doc sayfası tüm bunları açıklar, ama can sıkıcı bir şekilde size asla tam bir örnek vermez. Örneklerinin bir kısmını kopyaladım, ancak require valid-userkısmı kaçırdım . Tam bir örnek harika bir şey olabilir. Teşekkürler.
Buttle Butkus

1
@ sharif, <Konum /> olmalıdır, yani, ana sitenizin kök URL'sine erişim, bu kimlik doğrulama yapılandırmasını gerektirmelidir
agbb

1
Ben gerekli <Location />yapılandırma dosyası yüklenirken bir sözdizim hatası alamadım için herhangi bir durumda.
Perseids

3
Neden “çok fazla sorundan kaçınmak için düzeltildi…” dahili bir log mesajı ile <Location /> düzenlendi <Location>, ancak cevabın asıl nedeni hakkında hiçbir şey söylemedi? Apache'de bir <Location>yönerge (yani konumu olmayan biri ) diye bir şey yoktur . Bu kesinlikle şimdi sorun çıkarır. ;) (Bkz. Örneğin yukarı.)
Sz.

9

Apache2'yi ubuntu 10.04'te çalıştırıyorum - aynı problem ve çözüm için teşekkürler. Yapılandırmayı koymak zorunda olduğumu öğrendim/etc/apache2/apache2.conf

Kullanıcı adı ve şifreyi htpasswd kullanarak oluşturabilirsiniz. Yeni dosya:

$ htpasswd -c /srv/auth/.htpasswd squire

Mevcut dosyaya eklemek için:

$ htpasswd -b /srv/auth/.htpasswd squire2 tickleme2

7

Bir Konumu veya Dizini koruyabilirsiniz. Bir Dizin için şöyle bir şey ekleyin:

<Directory /some/dir/cgi-bin/>
    Options +ExecCGI
    AddHandler cgi-script .cgi
    AuthType Basic
    AuthName 'Private scripts'
    AuthUserFile '/some/other/dir/.htpasswd'
    Require valid-user
</Directory>

Ayrıca ekleyebilir Denyve Allowdaha ince bir kontrolü için direktifler.


4

İçinde kimlik doğrulama ayarlarını belirliyor gibisiniz VirtualHost. Genellikle, bu ayarlar Directoryyönergenin altında belirtilir .

.htaccesssDosyaları da kullanabilirsiniz , ancak Apache conf'de belirtmek daha az poz verebileceği için iyi bir varsayılandır.

Apache Belgeleri


3

Apache2'yi ubuntu 10.10'da çalıştırıyorum. Yukarıdaki tüm çözümlerle ilgili sorun yaşıyorum, ancak bu iyi çalıştı (apache belgelerinde):

<Dizin / var / www />
  Seçenekler Endeksleri FollowSymLinks MultiViews
  AllowOverride All
  Sipariş izin ver, reddet
  hepsinden izin ver
  AuthType Temel
  AuthName "Kısıtlı"
  AuthBasicProvider dosyası
  AuthUserFile / etc / users
  Kullanıcı ziyaretçisi iste
</ Rehber>

Yukarıdaki cevaplardan en büyük fark, "dosya" olarak ayarlanan AuthBasicProvider yönergesi ve gerçek kullanıcı adından önceki "kullanıcı" bitini içeren Require yönergesidir.

Umarım bu birine yardımcı olur.


3

Belleğin optimize edilmiş bir sürümünü kullanıyoruz ve bu sorunla karşılaştık.

Bu, apache yapılandırmasında bulunmayan şu satırdan kaynaklanıyordu:

LoadModule authz_user_module modules/mod_authz_user.so
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.