expertenaustausch > comm.software.* > comm.software.webserver

Manuel Reimer (03.02.2018, 12:57)
Hallo,

folgendes scheint mir zu funktionieren (in .htaccess):

| AuthType Basic
| AuthName "Restricted access"
| AuthUserFile /path/to/.htpasswd
| require valid-user
|
| <Files "index.cgi">
| AuthType Basic
| AuthName "Restricted access"
| AuthUserFile /path/to/.htpasswd
| require user some_user
| </Files>

Wenn ich mich mit *irgendeinem* User der .htpasswd einlogge, dann darf
ich alle Dateien in diesem Verzeichnis lesen.

Wenn ich aber die "index.cgi" lesen will, dann geht es nur wenn ich als
"some_user" eingeloggt bin.

Frage: Ist das sauber so? Wo findet man Doku die darauf eingeht in
welcher Reihenfolge solche Authentifizierungs-Sachen angewendet werden?

Müssen die Dopplungen sein oder reicht ein "require user some_user" im
<Files>?

Danke im Voraus

Gruß

Manuel
Thomas 'PointedEars' Lahn (19.02.2018, 17:34)
Manuel Reimer wrote:

[..]
> Wenn ich aber die "index.cgi" lesen will, dann geht es nur wenn ich als
> "some_user" eingeloggt bin.
> Frage: Ist das sauber so?


Ja (ausser die Verwendung von CGI).

> Wo findet man Doku die darauf eingeht in welcher Reihenfolge solche
> Authentifizierungs-Sachen angewendet werden?


<http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require>,
?Context?

> Müssen die Dopplungen sein


Nein.

> oder reicht ein "require user some_user" im <Files>?


Nein. Denk mal darüber nach.

<http://httpd.apache.org/docs/2.4/howto/auth.html#beyond>

Probier es das nächste Mal einfach aus.
Manuel Reimer (25.02.2018, 14:31)
On 02/19/2018 04:34 PM, Thomas 'PointedEars' Lahn wrote:
>> Frage: Ist das sauber so?

> Ja (ausser die Verwendung von CGI).


Wie soll das anders gehen, wenn serverseitig in Perl programmiert ist?

>> oder reicht ein "require user some_user" im <Files>?

> Nein. Denk mal darüber nach.
> <http://httpd.apache.org/docs/2.4/howto/auth.html#beyond>
> Probier es das nächste Mal einfach aus.


Habe ich in der Zwischenzeit und bei mir funktioniert:

AuthType Basic
AuthName "Restricted access"
AuthUserFile /path/to/.htpasswd
require valid-user

<Files "index.cgi">
require user some_user
</Files>

<Files "another.cgi">
require user second_user
</Files>

Ergebnis ist, dass alles erstmal ohne Login gesperrt ist. Zusätzlich
werden die zwei CGIs nur für einen ganz bestimmten User freigegeben.

Gruß

Manuel
Thomas 'PointedEars' Lahn (25.02.2018, 18:26)
Manuel Reimer wrote:

> On 02/19/2018 04:34 PM, Thomas 'PointedEars' Lahn wrote:
>>> Frage: Ist das sauber so?

>> Ja (ausser die Verwendung von CGI).

> Wie soll das anders gehen, wenn serverseitig in Perl programmiert ist?


Vermutlich FastCGI (ich kenne mich mit *serverseitigem* Perl nicht aus).
Ich würde auf jeden Fall noch Content Negotiation aktivieren; der HTTP-
Client sollte keine serverseitigen Implementierungsdetails kennen
können/müssen:

<https://www.w3.org/QA/Tips/uri-choose>
<https://www.w3.org/Provider/Style/URI>

> AuthType Basic
> AuthName "Restricted access"
> AuthUserFile /path/to/.htpasswd
> require valid-user
> <Files "index.cgi">
> require user some_user
> </Files>
> <Files "another.cgi">
> require user second_user
> </Files>


Du solltest überlegen, ob ?FilesMatch? oder ?LocationMatch? in Deinem Fall
besser als ?Files? ist ? auch in Hinblick auf obiges Problem.

> Ergebnis ist, dass alles erstmal ohne Login gesperrt ist. Zusätzlich
> werden die zwei CGIs nur für einen ganz bestimmten User freigegeben.


ACK. Ich sehe allerdings keinen guten Grund, die ?Require?-Direktive anders
zu schreiben als andere Direktiven ? auch wenn Apache da Gross-/Klein-
Schreibung offenbar egal ist.
Peter J. Holzer (16.03.2018, 19:10)
On 2018-02-25 12:31, Manuel Reimer <manuel.nulldevice> wrote:
> On 02/19/2018 04:34 PM, Thomas 'PointedEars' Lahn wrote:
>>> Frage: Ist das sauber so?

>> Ja (ausser die Verwendung von CGI).

> Wie soll das anders gehen, wenn serverseitig in Perl programmiert ist?


Auf die Schnelle fallen mir FCGI, mod_perl und Reverse Proxies ein. Gibt
sicher noch ein Dutzend andere Möglichkeiten, wie ein Webserver Requests
an Perl-Code weiterleiten kann.

CGI wird gerne mit Perl in Verbindung gebracht, weil das Mitte der
90er-Jahre die einfachste Kombination war. Aber kein modernes
Webframework für Perl wird im Normalfall über CGI angesprochen.

hp
Ähnliche Themen