Page tree
Skip to end of metadata
Go to start of metadata

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ä)
    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