Vetuma.pm 1.0 dokumentaatio

Uusi versio on julkaistu

http://www.helsinki.fi/~aulaskar/tietos/vetuma/doc/vetuma2.0/, alla oleva tieto koskee vanhaa versiota. : Ismo Aulaskari 17.4.2008

Vetuma.pm on todettu toimivan myös uuden Vetuma 2.1-määritelmän kanssa. En ole vielä julkaissut virallisesti seuraavaa versiota Vetuma.pm:stä vaikka se HY:llä tuotannossa salasanaresetointi- ja käyttöluvan aktivointisovelluksissa syksystä asti on ollutkin. Syynä on noihin oheisohjelmistoihin, jotka myös täällä piti julkaista, tullut toistuva lisätoiminnallisuuden tarve. Softat eivät ole päässeet vakiintumaan tarpeeksi että niitä olisi jaksanut kattavasti dokumentoida. Ne kyllä saa minulta tiskin alta niiltä osin kuin ne yleiskäyttöisiä ovat. : Ismo Aulaskari 19.3.2008

Vaikka lupasin moduulin seuraavan version ja oheissovellusten julkaisun kesäkuussa, ajattelin jättää sen sittenkin kesälomieni jälkeen jolloin viilaan vielä HY:llä tuotantoon siirtyvää käyttölupasovellusta. Jos joku kaipaa johonkin noita softia jotka testeissä jo toimivat ennen elokuuta voi ottaa yhteyttä henk.koht. : Ismo Aulaskari 5.7.2007

HUOM: Moduulin seuraava, toiminnallisuudeltaan laajempi versio on tulossa kesäkuussa! Uudistuksina mm. liikennemäärän rajoitin, paremmat oheiskirjastot www-sovellusten tekoon, ja VETUMA-autentikointiin integroidut salasananvaihtosovellus ja käyttölupasitoomuksen allekirjoitussovellus.
Dokumentin versio 1.0.1. Pieniä täydennyksiä tähän dokumenttiin : Ismo Aulaskari 15.2.2007
Tämän dokumentin versio 1.0 ja samalla Vetuma.pm-julkaisu : Ismo Aulaskari 2.2.2007

Esittely

Vetuma.pm on Helsingin yliopiston tietotekniikkaosaston toteuttama Perl-kielinen avoin ja vapaa autentikointimoduuli, joka toteuttaa julkishallinnon ja Fujitsu Service Finlandin VETUMA-portaalin version 2.0 tunnistamisrajapinnan. Moduuli siis mahdollistaa henkilön vahvan tunnistamisen VETUMA-portaalin tukemilla menetelmillä, kuten verkkopankkitunnuksilla, poliisin myöntämällä sähköisellä henkilökortilla ja mobiilivarmenteilla. Vetuma.pm itse on yksinkertainen ja tekee sen minkä lupaa.

VETUMA-tunnistautumisvastauksesta saadaan käyttäjän henkilötunnus, jonka avulla voidaan hakea käyttäjä organisaation käyttöluparekisteristä, tai käyttää saatuja tietoja uuden käyttäjän luontiin. VETUMA-palvelun käyttöä varten organisaation on tehtävä käyttösopimuksia käyttämiensä toisten osapuolten, eli Fujitsu Servicen, pankkien, mobiilivarmentajien ja Väestörekisterikeskuksen kanssa.

Vetuma.pm käyttää CPAN-arkistosta löytyviä avoimia Perl-kirjastoja, jotka asentuvat useimmille Unix-alustoille. Moduuli on testattu Red Hat Enterprise Linux 4-alustalla Apache 2 www-palvelinta vasten Tupas ja HST-autentikoinnilla. Vetuma.pm muistuttaa arkkitehtuuriltaan Tampereen yliopiston Tupas.pm-moduulia, jolle se on henkistä sukua ja josta se lainaa muutamia koodinpätkiä. Tämä on Vetuma.pm:n ensimmäinen julkaisu.

Fujitsu Services myy omia toolkitejaan Java- ja ASP.net-alustoille, jotka toteuttavat VETUMA-portaalin rajapinnat Vetuma.pm:ää kattavammin. Niitä ei valitettavasti HY:llä ehditty tähän hätään testata vastoin alkuperäisiä suunnitelmia.



VETUMA-esitys Tietotekniikkaosaston kehittämisiltapäivässä-ppt


Historia ja tulevaisuus

Helsingin yliopistolla päätettiin kokeilla Tupas-pankkitunnuksilla tehtyä vahvaa tunnistamista keväällä 2006 HAKA-pilotin muodossa. Tampereen Yliopiston Tupas.pm-moduuli olikin jo integroitu HY:n testijärjestelmiin kun loppukeväästä saatiin vihiä uudesta laajemmasta saman tarpeen täyttävästä VETUMA-portaalista joka tarjosi vahvaa tunnistamista Tupas-tekniikan lisäksi myös HST-kortilla ja mobiilivarmenteilla.

HY:n Tupas-pilotti vaihtuikin VETUMA-pilotiksi jonka lopputuloksena syntyi VETUMA-autentikointiportaalin tunnistusrajapinnan toteuttava avoin Vetuma.pm-moduuli ja projektin loppumetreillä vielä VETUMA 2.0-spesifikaation toteuttava versio, josta tämä dokumentti kertoo.

Pilotin yhteydessä aloitettiin rakentamaan myös VETUMA-tunnistautumiseen pohjautuvaa salasananvaihtopalvelua ja suunnittelemaan uusien opiskelijoiden käyttölupien luontia VETUMA-tekniikan avulla. Lisäksi pilotin ohessa syntyi suomenkielinen dokumentti sähköisten henkilökorttien käytöstä Linux-käyttöjärjestelmässä: Sähköinen henkilökortti ja Linux, sekä testitoteutus VETUMA-tunnistamisen liittämisestä Shibboleth-luottamusverkostoihin. Voi myös olla että tulevaisuudessa tulee tarve laajentaa Vetuma.pm tukemaan VETUMA-portaalin maksamis ja allekirjoitusrajapintoja. Tätä kirjoittaessa HY:llä on toimiva VETUMA-testipalvelu ja tuotantokäyttö odottaa sitä hyödyntävien palveluiden valmistumista.


Toiminnan kuvaus

  1. Käyttäjä tulee organisaation Vetuma-kirjautumissivulle (esim. linkki autentikoinnin vaativasta sovelluksesta) ja valitsee asiointikielen
  2. Käyttäjä ohjataan Fujitsu Servicen VETUMA-palveluun
  3. Käyttäjä autentikoi itsensä henkilökortilla tai pankin palvelussa
  4. Käyttäjän henkilötunnus palautetaan organisaation autentikointipalvelimelle
  5. Käyttäjä etsitään organisaation LDAP-hakemistosta (tms.) hetun avulla
  6. ..varsinainen Vetuma.pm:n toiminnallisuus loppuu tähän..mukana tulee kuitenkin demosovellus jossa:
  7. Tunnistetulle käyttäjälle luodaan sessio
  8. Käyttäjä ohjataan tunnistamisen vaatineeseen organisaation palveluun


VETUMA-demo-ppt (esittää VETUMA-portaalin 1.5-version toiminnan Vetuma.pm:n kautta)

täsmällinen kuvaus, VETUMA-Rajapinta 2.0

Tekniset vaatimukset

Palvelun asentaja tarvitsee Perl-5-ympäristön jossa seuraavat CPAN-kirjastot riippuvuuksineen:

Digest::MD5 
AppConfig 
AppConfig::File
CGI 
HTML::Template 
IO::Socket::INET 
POSIX Sys::Syslog 
Digest::SHA 
Net::LDAP 
CGI::Session

Lisäksi tarvitaan www-palvelin CGI-tuella, joista Apachet kelpaavat mainiosti.

Palvelun käyttäjä tarvitsee modernin www-selaimen joka tukee HTTPS:ää. Shibboleth-käytössä vaaditaan cookiet käyttäjän selaimessa. VETUMA-portaali ja verkkopankit suosittelevat myös Javascriptin käyttöä. HST-tunnistus vaatii kortinlukijan ohjelmistoineen.


Vetuma.pm

Vetuma.pm:ään liittyy seuraavat tiedostot:

appl/vetuma/lib/Vetuma.pm  #itse Vetuma.pm
appl/vetuma/doc/LICENSE    #lisenssi
appl/vetuma/templates/*    #erilaisia html-sivupohjia
appl/vetuma/etc/vetuma.cfg #konfiguraatiotiedosto
appl/ldap/Vetuma_LDAP.pm   #LDAP-moduuli
Perl-oliona toteutetun Vetuma.pm metodeista on ulkopuolelta tarkoitettu käytettäväksi new, authenticate, create_form, auth_user, lang, test_mode, system_error, set_return_url ja read_vetuma_error. Näistä ainoastaan kaksi viimeistä ovat Tupas.pm:n tunteville käsitteellisesti uusia. read_vetuma_error parsii VETUMA-palvelun lähettämän virhevastauksen, ja set_return_url on tarkoitettu Shibboleth-käyttöön.

Vetuma.pm-tiedostossa oleva koodi on kohtuullisen kommentoitua, se kannattanee silmäillä läpi. Yksinkertainen esimerkki Vetuma.pm:n käytöstä voisi olla vaikkapa seuraavanlainen:
use CGI;
use HTML::Template;
use Vetuma;
my $auth_user;
my $vetuma = new Vetuma();
my $query = new CGI;

#tämä luottaa että käyttäjätunnuksia löytyy 0-1
if( $auth_user = $vetuma->authenticate($query) ) {

  #Käyttäjä on tunnistettu ja hän on $auth_user
  #Muistetaan tämä ja mennään kohdesovellukseen 
}
else {   
 
  # auth_user not defined, possibly an error?
  if( $vetuma->auth_user() ) {
	# indeed an error!
    $vetuma->system_error();
  }
  else {
	# no error, user not authenticated

    print $query->header(-expires=>"now");
    print $query->start_html(
        -title=>'VETUMA login',
        -style=>$stylesheet
        );

    my $template = HTML::Template->new(filename => $templatefile);
    $template->param(FORM_FI => $vetuma->create_form());
    $template->param(LANG_FI => 1);
    print $template->output();
    print $query->end_html();
  }

}
Suurin osa Vetuma.pm:n konfiguraatio-asetuksista on tiedostossa vetuma/etc/vetuma.cfg

Onnistunut VETUMA-tunnistaminen tuottaa tunnistamismenetelmästä riippumatta käyttäjän henkilötunnuksen, jolla voi sitten hakea lisätietoja paikallisesta tietokannasta. Vetuma.pm 1.0 sisältää integraation TLS:llä salaavaan yksinkertaiseen LDAP-asiakkaaseen, mutta LDAP-tietokannan tilalla voi olla muukin autentikointilähde. Vetuma.pm, lähdekoodi


Demosovellus

Demosovellukseen sisältyy seuraavat tiedostot:

appl/session/*         #Sessionhallintakirjastot
appl/vetuma/templates  #html-sivupohjia
vetumacgi/*            #cgi-sovelluksia
Vetuma.pm:n mukana tulee Perl-kielisiä Vetuma.pm:ää ja HTML::Templatea hyödyntäviä esimerkki CGI-sovelluksia, jotka tarjoavat esimerkin Vetuma.pm:n käytöstä ja toteuttavat pohjan HY:n tulevalle salasananvaihtopalvelulle. Demopalvelun aloitussivu on toteutettu vetumaauth.cgi-tiedostossa. Demosovellus on hieman keskeneräinen, mutta opettavainen. Demopalvelun lähdekoodi on täällä: Vetuma-demosovellus, lähdekoodi

Lisäksi HY:n VETUMA-demoympäristö on toistaiseksi vapaasti kokeiltavissa pankkien testitunnuksilla (Osuuspankin tunnuksilla 123456 7890 1111 löytyy HY:llä testikäyttäjä): Toimiva VETUMA-demoympäristö HY:llä toistaiseksi näkyvillä


Asennus

Aluksi on luotava Perl-ympäristö. HY:llä Vetuma.pm on asennettu omalle tunnukselleen jolla on oma CPAN-ympäristö. Tarvittavat CPAN-moduulit asentuvat esim. seuraavilla loitsuilla:

cpan -i Digest::MD5 AppConfig AppConfig::File 
# sano yes seuraa riippuvuuksia
cpan -i CGI HTML::Template IO::Socket::INET POSIX Sys::Syslog Digest::SHA Net::LDAP CGI::Session 
# sano yes ssl:lle

Pura Vetuma-zippipaketti. Konfiguroi vetuma.cfg ja polut Vetuma.pm:n alussa. Konfiguroi Vetuma_LDAP.pm käyttämään oman organisaatiosi LDAP-hakemistoa tai korvaa LDAP-henkilötunnuskysely muulla autentikointimenetelmällä. Konfiguroi tarvittaessa myös muut käyttämäsi moduulit ja cgi-sovellukset.




Shibboleth

Vetuma.pm integroidaan Shibboleth-1.3-käyttöön muuten kuten mikä tahansa muukin autentikointimenetelmä, mutta on muistettava kaapata Shibboleth SP:n back-parametri ja säilytettävä se VETUMA-portaalin käsittelyssä esimerkiksi laittamalla se parametriksi VETUMA:n paluuosoitteessa. Lisäksi on hyvä pitää mielessä, että jos VETUMA:n palauttamalla henkilötunnuksella löytyy useampia käyttäjätunnuksia kotiorganisaatiosta, Vetuma.pm palauttaa ne kaikki listakontekstissa.

HY:n esimerkki-Shibboleth-toteutus huomioi molemmat näistä asioista ja tarjoaa tarvittaessa välisivun jossa käyttäjä voi valita useammasta käyttäjätunnuksestaan. Shibboleth- ja mod_auth_tkt-integraatio, lähdekoodi



Ohjelmapaketti

vetuma_pm1.zip lähdekoodi ja tämä sivu


Lisenssi

This sofware was made in the IT-center of Helsinki University and released
free without any warranty to the world.  Vetuma.pm based on the open Vetuma
spesification by Fujitsu Services Finland and ideas and some pieces of code
from Tupas.pm, of which the following license is from:

Copyright 2004-2005, University of Tampere, Computer Centre

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Huomioitavaa


Linkit

HY:llä syntynyt materiaali Vetuma Tupas Shibboleth-integraatio
ismo.aulaskari@helsinki.fi