OpenID Connect
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