Vetuma.pm on todettu toimivan myös Fujitsun uuden Vetuma 2.1-määritelmän kanssa. Version 2.0 jälkeen tulleita lisäominaisuuksia ei kuitenkaan vielä tueta.
Tämä on Helsingin yliopiston Vetuma.pm:n version 2.0 julkaisu. Kyseessä ei ole pakollinen päivitys versiota 1.0 käyttäneille, mutta uusissa
asennuksissa suositellaan käyttämään tätä uutta versiota.
HY:n Vetumaa käyttäviin oheisohjelmistoihin (salasananresetointi ja käyttöluvan itseaktivointi), jotka myös täällä piti julkaista, on 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 17.4.2008
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- ja Centos 5-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 toinen 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.
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 kaksi VETUMA-tunnistusta käyttävää tuotantosovellusta, joiden lähdekoodi tullaan julkaisemaan
aikanaan tällä sivulla.
Palvelun asentaja tarvitsee Perl-5-ympäristön jossa mm. seuraavat CPAN-kirjastot riippuvuuksineen:
Digest::MD5 AppConfig AppConfig::File CGI HTML::Template IO::Socket::INET POSIX Sys::Syslog Digest::SHA Net::LDAP CGI::Session #tietokantaa varten: DBI DBD::Oracle #tms. tietokantaspesifinen kirjasto
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:ään liittyy seuraavat tiedostot:
vetumalib/vetuma/lib/Vetuma.pm #itse Vetuma.pm vetumalib/vetuma/doc/LICENSE #lisenssi vetumalib/vetuma/templates/* #vetuma-lomakkeen html-sivupohja vetumalib/vetuma/etc/vetuma.cfg #konfiguraatiotiedosto vetumalib/ldap/Vetuma_LDAP.pm #LDAP-moduuliPerl-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.
#!/usr/bin/perl
#the code for the VETUMA login page
#This is a simplified (demo) version of the login, without traffic limiting and other security checks.
#For organisations where a user can have only one account/finnish identitycode.
#The full version is vetumaauth.cgi
use strict;
use warnings;
use lib '../lib/perl5';
use lib '../vetumalib/vetuma/lib';
use lib '../vetumalib/session';
use Vetuma;
use DiskSession;
use CGI;
use HTML::Template;
use lib '../vetumalib/unicode';
use Charsets;
use lib '../vetumalib/config';
use ApplSettings;
my $conf = new ApplSettings();
$conf->parse_configuration('../vetumalib/config/passwd.cfg');
#template for hy-vetuma login page and login errors:
my $templatefile = '../vetumalib/demoapp/templates/hy_vetuma_login.html';
my $chooseaccount_template = '../vetumalib/demoapp/templates/hy_choose_account.html';
my $targetpage = $conf->{BASE_URL}.'/YOUR_APPLICATION_HERE.cgi';
my @auth_user;
my $auth_user;
my $vetuma = new Vetuma;
my $query = new CGI;
if( $auth_user = $vetuma->authenticate($query) ) {
#vetuma authentication succeeded
my $cookie = CreateSession($query, $conf->{SESSIONNAME}, $auth_user, lc($vetuma->lang()));
RedirectSession($query, $targetpage, $cookie);
}
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", -charset=>$conf->{CHARSET},);
print $query->start_html(
-title=>$conf->{TITLE},
-style=>$conf->{STYLESHEET}
);
my $template = HTML::Template->new(filename => $templatefile);
#let the user choose the language
$vetuma->lang('fi');
$template->param(FORM_FI => $vetuma->create_form());
$template->param(LANG_FI => 1);
$vetuma->lang('sv');
$template->param(FORM_SV => $vetuma->create_form());
$template->param(LANG_SV => 1);
$vetuma->lang('en');
$template->param(FORM_EN => $vetuma->create_form());
$template->param(LANG_EN => 1);
$template->param(HELPDESK => $conf->{HELPDESK});
print $template->output();
print $query->end_html();
}
}
exit 0;
Suurin osa Vetuma.pm:n konfiguraatio-asetuksista on tiedostossa vetuma/etc/vetuma.cfg
Demosovellukseen sisältyy seuraavat tiedostot:
vetumalib/session/* #Sessionhallintakirjastot vetumalib/demoapp/templates #html-sivupohjia vetumacgi/* #cgi-sovelluksia -demoservice.cgi #monimutkaisempi vetuma-tunnistus, jossa liikennemäärän valvonta ym. -vetumaauth.cgi #liittyy edelliseen -vetumaauth_simple_demo.cgi #yksinkertaisempi vetuma-tunnistus kokeilukäyttöönVetuma.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 pelkkä kehys, mutta opettavainen. Demopalvelun lähdekoodi on täällä: Vetuma-demosovellus, lähdekoodi
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.
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. Huom: tätä ei ole päivitetty Vetuma.pm:n versioon 2.0
Shibboleth- ja mod_auth_tkt-integraatio, lähdekoodi
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.