Apache httpd ja mod_shibilla suojaus

Last modified by Jukka Karvonen on 2024/06/07 14:20

Apachen konfiguroinnista

Lisätietoja: https://wiki.shibboleth.net/confluence/display/SP3/Apache

Apache tarjoaa oletuksena Shibboleth-parametrit tarjolle ympäristömuuttujissa. Saatavilla on edelleen myös ShibUseHeaders -parametri, jolla ne välitetään Headereina, mutta tietoturvasyistä tätä ei tulisi käyttää. Yllä mainitulta sivulta löytyy lisää tietoja aiheesta.

SSL:ää käytettäessä (=aina) tulee lokaatioon lisätä lisäksi "SSLOptions +StdEnvVars" määre, jotta ympäristömuuttujat välittyvät palvelulle.

ProxyPass

Jos Apache toimii vain edustapalvelimella ja proxyttaa ProxyPassilla tiedot esim. nodejs:lle, voidaan attribuutit välittää vain Headerissa. Tällöinkään ei tulisi käyttää ShibUseHeadersia vaan määrittää yksitellen välitettävät parametrit.

# Poistetaan mahdolliset selaimen välittämät headerit ym.
RequestHeader unset <attribute>
# Kirjataan uusi headeri ympäristömuuttujasta, jos ympäristömuuttuja on olemassa
RequestHeader set <;attribute> %{<attribute>}e env=<attribute>

Pääsynrajoituksen esimerkkejä

Apachen htaccess-sääntöjä voi käyttää rajaamaan pääsyä. Tarkempia ohjeita löytyy Shibboleth SP:n ohjeita.

https://wiki.shibboleth.net/confluence/display/SP3/htaccess

Sijainti vaatii kirjautuneen käyttäjän

<Location /secure>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  Require valid-user
</Location>

Sijainti ei vaadi kirjautumista, mutta shibbolethin attribuutit ovat tarjolla

<Location /public>
  AuthType shibboleth
  ShibRequestSetting requireSession false
  Require shibboleth
</Location>

Poista kirjautuminen esim. APIsta

Vaikka sivusto vaatisi Shibbolethin, ei taustalla tehtyjä API-kutsuja kannata suojata sillä vaan käyttää muita tapoja tunnistukseen.

<Location /api>
  Order Allow,Deny
  Allow from all
  Satisfy any
</Location>

Ylläpitosivu, jossa vaaditaan käyttäjän lisäksi tietty osoite

<Location /admin>
  AuthType shibboleth
  ShibRequest
Setting requireSession 1
Require valid-user
  Order Allow,Deny
  Allow from admin.helsinki.fi
Satisfy all
</Location>

Sallitaan työntekijöille

Olettaa että eduPersonAffiliation-attribuutti luovutetaan palvelulle ja se on määritetty affiliation-id:lle attribute mapissa.

<Location /admin>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  Require shib-attr affiliation employee
</Location>