OpenID Connect

Last modified by Jukka Karvonen on 2024/03/20 13:17

OIDC-tuki on lisätty samaan Shibboleth-palvelinsovellukseen, jota myös SAML-kirjautuminen käyttää. Käyttäjän kannalta kirjautuminen tapahtuu samoin kuin SAML:a käytettäessä, mutta OIDC:ssa ei ole tukea kertauloskirjautumiselle (SLO). Tietoa uloskirjauksesta ei välitetä palveluihin eivätkä nämä palvelut sisälly uloskirjautuessa kirjautumispalvelun näyttämään palvelulistaukseen.

Suosittelemme käyttämään OpenID-säätiön sertifioimia tuotteita tai kirjastoja palvelun toteuttamiseen.

Mikä OIDC?

Perustietoja OIDC:n toiminnasta esimerkiksi artikkelista https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1 (3-osainen).

OIDC-tiedot

Tuotantopuolen provider-tiedot löytyy osoitteesta: https://login.helsinki.fi/.well-known/openid-configuration

Palvelun rekisteröinti

Dynaaminen rekisteröinti ei ole käytössä vaan palvelut rekisteröidään SP-rekisterin kautta. Tarkemmat ohjeet rekisteröinnistä löydät linkin takaa.

SP-rekisterissä määritetään palvelun yleisiä tietoja sekä käytettävät teknologiat ja tiedot, joita palvelun on sallittua pyytää.

Ensisijaisesti palveluiden suositellaan käyttävän authorization code flow:ta, mutta myös muita standardeja tapoja tuetaan.

Tällä hetkellä perinteisten websovellusten osalta suositellaan client_secret_basic -tapaa tunnistukseen. Tunnistuspalvelu tukee myös esim. julkisen avaimen mentelmää, mutta avaintietojen välitys palvelulle SP-rekisterin kautta ei vielä ole tuettuna.

Testipalvelu

SP-rekisterin kautta palvelun voi lisätä myös testipalveluun. Tämä mahdollistaa palveluiden testauksen ilman erillistä hyväksyntää.

Testipalvelun provider-tiedot löytyy osoitteesta: https://login-test.it.helsinki.fi/.well-known/openid-configuration

Tokeneiden eliniät

  • Authorize code: 5 min
  • Access token: 10 min
  • ID token: 60 min
  • Refresh token: 120 min

Esimerkkikonfiguraatio Apache mod_auth_openidc:lla

Yksinkertaisimmillaan /secure sijainnin Apachessa voi suojata mod_auth_openidc:lla seuraavasti:

LoadModule auth_openidc_module modules/mod_auth_openidc.so
OIDCClientID id_saadaan_sp_reksiteristä
OIDCClientSecret secret_saadaan_sp_reksiteristä
OIDCProviderMetadataURL https://login.helsinki.fi/.well-known/openid-configuration
OIDCProviderIssuer https://login.helsinki.fi
OIDCRedirectURI <palvelun paluuosoite, joka tulee määrittää SP-rekisteriin, esim https://example.org/secure/redirect_uri>
OIDCCryptoPassphrase <satunnainen salasana evästeille ym.>
OIDCScope "openid email"
<Location /secure>
    AuthType openid-connect
    Require valid-user
</Location>

Käyttäjän tiedot, claimit

Jos halutaan yksittäisiä tietoja käyttäjästä, pyydetään ne ylimääräisenä claims-paremetrinä, joka sisältää erikseen userinfo endpointista ja ID tokenista saatavat tiedot:

{ "userinfo": { "uid": null, }, "id_token": { "given_name": null, "family_name": null, } }

Parametri annetaan URL-enkoodatussa muodossa:

OIDCAuthRequestParams claims=%7B%0A%20%20%22userinfo%22%3A%20%7B%0A%20%20%20%20%22uid%22%3A%20null%2C%0A%20%20%7D%2C%0A%20%20%22id_token%22%3A%20%7B%0A%20%20%20%20%22given_name%22%3A%20null%2C%0A%20%20%20%20%22family_name%22%3A%20null%2C%0A%20%20%7D%0A%7D

Tarkemmin aiheesta: https://openid.net/specs/openid-connect-core-1_0.html#ClaimsParameter

Testaus

Määritetään InfoHook-testiosoite, jolloin käyttäjä pystyy näkemään omat tietonsa osoitteessa <redirect_uri>?info=json

OIDCInfoHook iat access_token access_token_expires id_token userinfo refresh_token session