Ulkoinen autentikointi

  1. Integraation suunnittelu

    Ensimmäinen asia jota kannattaisi miettiä ennen LDAP-hakemiston konfigurointia tilavarausohjelmiston kylkeen on tapa, jolla sitä halutaan hyödyntää tilavarausjärjestelmän kanssa. Tilavaraus tukee kahden tasoista integraatiota:

    1. Käyttäjähallinta voidaan rakentaa pelaamaan osittain automaattisesti LDAP-hakemiston ryhmäjäsenyyksiin pohjautuen. Tilavaraus voidaan konfiguroida siten, että tietty ryhmäjäsenyys LDAP-hakemistossa antaa käyttäjälle tietyn käyttäjäroolin tilavarausjärjestelmän puolella. Nämä LDAP-käyttäjäryhmät kannattaa miettiä tarkkaan, ja kenties voisi olla hyvä ajatus perustaa selvyyden vuoksi kokonaan uudet ryhmät jotka antavat tilavarauksessa oikeuksia ellei ryhmien tilanne ole nykyisellään tähän tarkoitukseen riittävän selkeä.

      Tämäntasoiseen integraatioon liittyy lisäksi olennaisena asiana ulkoisen järjestelmän avulla sisään kirjautuvan käyttäjän tunnistaminen tietyksi henkilöksi tilavarauksessa, esimerkiksi oman kalenterin käytön mahdollistamiseksi. Tällöin henkilön varauskohteen tunnus tilavarausjärjestelmässä on oltava sama kuin hänen LDAP-käyttäjätunnuksensa.

    2. LDAP:ia voidaan käyttää myös pelkkään käyttäjän autentikoimiseen, jolloin käyttäjä perustetaan normaalisti tilavarauksen puolelle ja hänelle pistetään päälle ruudun alaosasta täppä "ulkoinen autentikointi". Tällöin käyttäjän salasana kysellään LDAP:sta, mutta muut tiedot ovat normaalisti tilavarauksessa.

      Jälkimmäinen optio täydentää hyvin ensimmäistä, sillä usein valtaosa käyttäjistä voidaan päätellä automaattisesti, mutta eteen tulee tiettyjä erikoistapauksia jotka tarvitsevat käytännön syistä tietynlaisia oikeuksia. Tällaiset käyttäjät voidaan perustaa 1.2 kohdan mukaisesti, ja jättää silti suuret massat automaattipäättelyn alle.

  2. Palvelimen konfiguraation tarkistus

    Tarkista ennen LDAP-integraation aloittamista että PHP:n LDAP-laajennus on asennettu. Ohjeita tähän löytyy ainakin PHP:n manuaalista.

  3. LDAP-moduulin aktivointi

    Kopioi LDAP-hakemistollesi oikea toteutusmoduuli tilavarauksen inc-kansiossa nimelle ext_auth.php. Mukana toimitettuja toteutuksia ovat:

    • ext_auth.php.ad = Microsoft Active Directory
    • ext_auth.php.domino = Lotus Domino
    • ext_auth.php.ldap = Sun LDAP (lienee lähinnä standardia näistä)
  4. LDAP-hakemiston konfigurointi (Microsfot Active Directory)

    Asio-tilavaraus sisältää rajapinnan ulkoisten käyttäjätietojärjestelmien hyödyntämiseksi. Tätä rajapintaa käyttäviä toteutuksia on olemassa tällä hetkellä (27.7.2005) Asio-opiskelijahallintojärjestelmälle sekä Microsoft Active Directorylle. Tässä on ohjeet Microsoft Active Directory -rajapinnan asennusta ja konfigurointia varten.

    Allaolevassa kuvassa on kuvattu, kuinka käyttäjätietojen käsittely tapahtuu Asio-tilavarausohjelmistossa kun käytetään Active Directory -autentikointia.

    Ulkoisen autentikoinnin arkkitehtuuri

    Vaatimukset

    Asio-tilavarauksen yleisten laitteisto- ja ohjelmistovaatimusten lisäksi Microsoft Active Directory -rajapinnan hyödyntäminen edellyttää seuraavaa:

    • PHP-moduulissa on käytettävissä LDAP-laajennusosa. Linux/Unix-palvelimilla tämä voi edellyttää PHP-moduulin kääntämistä uudestaan, Windows-palvelimilla riittää yleensä laajennuksen ottaminen käyttöön PHP.INI -tiedostoa muokkaamalla. Tarkempia ohjeita PHP:n asennukseen ja konfigurointiin löydät PHP-käsikirjasta asennusta käsittelevästä kappaleesta.
    • LDAP-yhteyden muodostaminen on mahdollista Asio-tilavarauspalvelimen ja Active Directory -palvelimien välille. LDAP-protokollaa varten TCP-portti 389 tulee tarpeen mukaan avata palomuurista näiden palvelimien väliltä.

    Ulkoisen autentikoinnin käyttöönotto

    Itse ulkoisen autentikoinnin käyttöönotto tapahtuu seuraavasti:

    1. Avaa tilavarausohjelmiston palvelinkohtainen konfiguraatiotiedosto inc/server_settings.php tekstieditoriin.
    2. Etsi kohta $ext_udb_config. Tämä PHP-taulukko sisältää yhteysasetukset Microsoft Active Directorylle seuraavasti, muokkaa ainakin seuraavat asetukset sopiviksi:
      • "domain_name" = Selväkielinen nimi järjestelmälle, esim. domain muodossa "yritys.fi"
      • "database" = Tilavarauksen tietokanta, johon ulkoinen autentikointi liittyy. Laita tähän organisaatiosi oma tietokanta (lisää aiheesta ensiasennusohjeissa).
      • "account_suffix" = Käyttäjätunnuksen loppuosa yhteyttä varten (esim. "@osasto.yritys.fi")
      • "base_domain" = LDAP-domain LDAP-kyselyn muodossa, esim. edellisen kohdan mukainen domain olisi "DC=osasto,DC=yritys,DC=fi"
      • "domain_controllers" = Taulukko domain controller -palvelimista, esim.
        array("dc1.yritys.fi","dc2.yritys.fi")
    3. Etsi kohta $ext_profiler_config. Tämä PHP-taulukko sisältää käyttäjätietojen profiloinnin asetukset, jotka määrittävät sen, miten Active Directoryn käyttäjätiedot muunnetaan tilavarausohjelmiston käyttöoikeuksiksi.
      • "admin_groups" = Ulkoisen järjestelmän käyttäjäryhmät, joilla on ylläpito-oikeudet. Asetus annetaan PHP-taulukkona, esim.
        array("hallinto","ylläpito")
      • "normal_groups" = Ulkoisen järjestelmän käyttäjäryhmät, joilla on varausoikeudet.
      • "browsing_groups" = Ulkoisen järjestelmän käyttäjäryhmät, joilla on selailuoikeudet. Voit laittaa tähän taulukkoon merkinnän "*", joka tarkoittaa kaikkia ryhmiä.
      • "browsing_types" = Lajirajaus selailukäyttäjille. Asetus annetaan PHP-taulukkona, esim.
        array("ATK-luokat","Kokoushuoneet")
        Vastaavasti voidaan määritellä lajirajaus myös ylläpito- ja varauskäyttäjille asetuksin admin_types ja normal_types.
      • "ROOLI_groups" = Ulkoisen järjestelmän käyttäjäryhmät, jotka liitetään rooliin ROOLI. Voit laittaa tähän taulukkoon merkinnän "*", joka tarkoittaa kaikkia ryhmiä. (alkaen tilavarauksen versiosta 7)
      • "roles" = Roolien prioriteettijärjestys. Käyttäjä tulkitaan kuuluvan siihen häneen sopivaan rooliin, joka löytyy tältä listalta ensimmäisenä. Laita tälle listalle roolit siten, että eniten oikeuksia antava rooli on ensimmäisenä. (alkaen tilavarauksen versiosta 7)
      • Käyttöesimerkki:
        Oletetaan että meillä on asiossa rooli "opettajat" joka halutaan tulevan sellaisille LDAP-käyttäjille jotka kuuluvat käyttäjäryhmään "asio_opettajat". Konffausmuutokset $ext_profiler_config-osioon seuraavassa:

        1. Lisää "opettajat" rooli konfiguraation prioriteettilistalle sopivaan kohtaan:

          VANHA:
          "roles"=>array("yllapito","opiskelijat"),

          UUSI:
          "roles"=>array("yllapito","opettajat","opiskelijat"),

          Tämä määrittelee sen mikä rooleista valitaan jos LDAP-käyttäjäryhmien perusteella käyttäjä voisi kuulua useaan rooliin.

        2. Lisää sidonta opettajat-roolin ja asio_opettajat-käyttäjäryhmän välille:

          UUSI RIVI:
          "opettajat_groups"=>array("asio_opettajat"),
    4. Ota käyttöön Active Directory -autentikointi kopioimalla tiedosto inc/ext_auth.php.ad tiedostoksi inc/ext_auth.php.

Kysymyksiä ja vastauksia

  • K: Meillä on opiskelijoille suunnattuja harjoitussaleja, joihin he tekevät omia varauksia kynä-paperi-systeemillä. Voidaanko opiskelijoille antaa millaisia käyttöoikeuksia, vai onko tämä mahdollista vasta omalla palvelimella?

    Opiskelijoille voi antaa järjestelmään tiettyihin tiloihin varausoikeudet. Opiskelijoita varten kannattaa määritellä tilavarausohjelmistoon oma roolinsa kohdasta Ylläpitotoiminnot -> Asiakaskohtaiset roolit, jossa merkkaa varausoikeudet päälle vain opiskelijoille suunnattuihin harjoitussaleihin. Tämän toiminnon kautta voi myös säätää päävalikon sisältämään ainoastaan opiskelijoille käytettäväksi tarkoitetut toiminnot.

    Varausoikeuksien antaminen opiskelijoille edellyttää myös että opiskelijoiden käyttöoikeustiedot saadaan jollain tavalla tilavarausohjelmalle. Täysin anonyymisti ja ilman kirjautumista varausta ei voi tehdä.

    Koska henkilömäärä on tässä tapauksessa niin suuri, vaatii tämä käytännössä jonkinlaisen ulkoisen autentikointirajapinnan (esim. Microsoft Active Directory tai muu LDAP, Shibboleth) käyttöönottoa. Tämä ulkoisen autentikoinnin käyttöönotto on puolestaan sellainen askel jossa voidaan edetä kunnolla vasta kun ohjelmisto on siirretty omalle palvelimelle.

  • K: Normaalistihan tilavarauksissa henkilöllä, jolla on käyttäjätunnus asioon, on varausoikeus tilalajeihin 'opettajat' ja 'tilat'. Nyt kysymys, kun meillä on käytössä ulkoinen autentikointi, eikä ylläpidossa näy a.o. tunnusta, miten saadaan henkilön oikeudet esimerkiksi tilalajille 'autot' siten, että ne olisivat massalle joko vahvistamattomat tai ei varausoikeutta ollenkaan?

    V: Automaattisesti profiloinnin kautta pääteltäviin oikeuksiin tällaiset asetukset ovat mahdollisia roolien avulla. Toimintaperiaatteena on se että ulkoisesta autentikoinnista tulevien tietojen perusteella päätellään käyttäjän rooli, ja ylläpitovalikosta löytyvän toiminnon Ylläpitotoiminnot -> Asiakaskohtaiset roolit avulla määritellään tälle roolille sopivat oikeudet.

    LDAP:n tapauksessa roolin sidonta voidaan tehdä LDAP:ssa olevien käyttäjäryhmien perusteella. Sitominen tehdään tilavarausohjelmiston konfiguraatiotiedostoon inc/server_settinsg.php ja ohje roolin ja käyttäjäryhmien sitomiseen löytyy ylempää "Ulkoisen autentikoinnin käyttöönotto"-kappaleen kohdasta 3.