Opintopolun palveluiden autentikaatio pohjautuu CAS:iin. Ulkoiset järjestelmät voivat tunnistautua käyttäen CAS:n rest-rajapintaa (https://apereo.github.io/cas/6.0.x/protocol/REST-Protocol.html). Yksinkertaistettuna prosessi menee seuraavasti:

  1. Haetaan ticket granting ticket (TGT) (pitkäkestoinen elinikä, virkailija-CAS 8 h)
    1. Form-paramseissa CAS-käyttäjätunnus ja salasana (username, password)
    2. Palvelu palauttaa 201 Created ja ST-ticketin url on headereissa "location" arvona
  2. Haetaan service ticket (ST) kutsuttavalle palvelulle (huom, palvelun oma urli) käyttäen TGT:tä
    1. Käytetään TGT:n luonnissa saatua urlia
    2. Form paramseihin tulee "service" -arvo, joka on urli palvelin CAS security checkiin. Esim. https://service.xyz/example-service/j_spring_cas_security_check
    3. (Jos tgt on väärä tai vanhentunut palautuu http status 404. Tällöin TGT on uusittava.)
  3. Kutsutaan palvelua, välitetään service ticket
    1. Service ticket välitetään urlparametreissä "ticket".
      1. (Osassa palveluja voi olla erilainen autentikaatio tai service tiketin käsittely, varmista tilanne aina käytettävästä palvelusta).
    2. Service ticket on pyyntökohtainen, ei uudelleen käytettävä. 
    3. Tiketti on lyhytikäinen, kesto on vain 10 sekuntia.
    4. Huom! Muista liittää palvelukutsuihin kutsujan tunniste (Caller-Id).
  4. Logout



Yksinkertainen nodejs esimerkki autentikaatiosta tarjonta-palveluun kohdat 1&2:

https://github.com/Opetushallitus/tarjonta-api-dokumentaatio/blob/master/lib/authenticate.js

Huom! Pyynnön content-type pitää olla application/x-www-form-urlencoded


Käytössä oleva Clojure-toteutus:

https://github.com/Opetushallitus/ehoks/blob/5fcbe05e05251d4b6f8ce53ab6dffeb0bfdd87d7/src/oph/ehoks/external/connection.clj


Huom! Käytä oikeaa ympäristöä testaamiseen. Se ympäristö missä cas tiketti luodaan toimii vain sen ympäristön palveluissa. Myös tunnukset ovat ympäristökohtaisia.

QA: https://virkailija.testiopintopolku.fi

  • No labels