Apache a indivializovane adresare

Karel Salavec karels na pc163.gr.ph.ct.cz
Pondělí Březen 14 08:55:59 CET 2005


On Sunday 13 of March 2005 16:25, Petr Vileta wrote:
> Karel Salavec wrote:
> > Zdravim!
> >
> > Mam takovy problemek:
> > Mejme nekolik uzivatelu (treba aaa,bbb,ccc), kterym je treba predavat
> > zabezpecenym pusobem citliva data (kazdy ma jina). Klient by mel byt
> > libovolny browser.
> >
> > Zvolil jsem reseni SSL a klientske certifikaty. Generovani certifikatu a
> > zbytek hry na CA zvladnuto bez problemu, ale zbyva posledni prekazka:
> > Jak namapovat napr. /var/www/data/<user> na https://nas_server/data,
> > kde pro kazdeho usera bude jiny adresar.
> > Priklad:
> > pro usera aaa budu servirovat data z /var/www/data/aaa
> > pro usera bbb z /var/www/data/bbb
> >
> > Predpokladam, ze bych se ridil podle promenne SSL_CLIENT_S_DN_CN.
>
> No ja bych to udelal nejak takhle (pro Apache 1.3.x co provozuji):
> V konfiguraku Apache udelat
> ---CUT---
> <Directory "/var/www/data">
>     AllowOverride Options ExecCGI
>     <Files ~ "^\.ht">
>         Order allow,deny
>         Deny from all
>         Satisfy All
>     </Files>
> </Directory>
> <Directory "/var/www/data/Karel">
>     AllowOverride Options AuthConfig FileInfo
> </Directory>
> <Directory "/var/www/data/Franta">
>     AllowOverride Options AuthConfig FileInfo
> </Directory>
> ---CUT---
>
> Do adresare /var/www/data umistit soubor .htaccess s timto obsahem
> ---CUT---
> AuthType Basic
> AuthName "Zadej prihlasovaci jmeno a heslo"
> AuthUserFile /var/www/data/.htpasswd
> require valid-user
> ---CUT---
>
> Pak pomoci
>     htpasswd -c /var/www/data/.htpasswd Karel
> vytvorit soubor hesel s prvnim uzivatelem Karel
> Dale opet pomoci htpasswd pridat druheho uzivatele.
>     htpasswd /var/www/data/.htpasswd Franta
>
> Pak zkopirovat
>     /var/www/data/.htaccess
> a
>     /var/www/data/.htpasswd
> do adresaru Karel a Franta a upravit obsah .htaccess
> pro Franta
> ---CUT---
> AuthType Basic
> AuthName "Zadej prihlasovaci jmeno a heslo"
> AuthUserFile /var/www/data/Franta/.htpasswd
> require valid-user
> ---CUT---
>
> pro Karel
> ---CUT---
> AuthType Basic
> AuthName "Zadej prihlasovaci jmeno a heslo"
> AuthUserFile /var/www/data/Karel/.htpasswd
> require valid-user
> ---CUT---
>
> a v souborech /var/www/data/Franta/.htpasswd (a Karel/.htpasswd) nechat jen
> heslo pro toho jedineho uzivatele.
> Treba by slo na to napsat jednoduchy skript, ktery by to udelal ze
> zakladnich souboru pomoci grepu nebo tak nejak.

Pokud budeme uvazovat (jak v puvodnim receno), ze zabezpeceny kanal (SSL + 
klientske certifikaty), pak staci

<Directory "/var/www/data/Karel">
   SSLOptions +StdEnvVars +FakeBasicAuth +StrictRequire
   SSLRequire (    %{SSL_CLIENT_I_DN_CN} eq "Moje CA" \
                        and %{SSL_CLIENT_I_DN_OU} eq "Zakaznici" \
   and %{SSL_CLENT_S_DN_CN} eq "Karel" )

</Directory>

a nemusim resit udrzbu a synchronizaci .htpasswd.

Drobny problem nastava v okamziku, kdy zakazniku jsou desity ci stovky.

>
> No a nakonec do /var/www/data umistit soubor index.cgi, ktery bude mit
> tento obsah (a bude spustitelny)
> ---CUT---
> #!/usr/bin/perl
> $redir='https://nas_server/data/' . $ENV{REMOTE_USER};
> print "Location: $user\n\n";
> ---CUT---

Nojo, ale to uz jsme mimo standardni prostredky Apache (coz jsem nechtel).

>
> A to je vsechno.
> Pro uzivatele to bude vypadat tak, ze napise URL https://nas_server/data a
> bude dotazan na Jmeno a Heslo. To vyplni a ono ho to presmeruje do jeho
> adresare. Pokud by se pokusil prejit do adresare nekoho jineho, tak se ho
> to zepta znovu na jmeno/heslo toho jineho uzivatele a pokud ho nebude znat,
> vykopne ho to.
>

Diky za snahu, ale jak vidno, az tak uplne to puvodni problem neresi :-(

> --
> Petr

Karel


Další informace o konferenci Linux