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