Hvad er Unilogins OIDC-løsning?

OIDC-løsningen bygger på OIO specifikationen af OpenID Connect (OIDC) protokollen, som understøtter autentifikation af brugeren og Single Sign-On (SSO).
OIDC-standarden er et rammeværk baseret på JSON Web Tokens (JWT) til udveksling af sikkerhedsinformationer mellem de forskellige parter. Sikkerhedsinformationen udtrykkes i form af JWT påstande (claims), som er digitalt signerede JSON-strukturer, der udveksles mellem de kommunikerende parter. Ved udveksling er det muligt at sende information om brugeren i form af JWT tokens, som kan anvendes til autentificering og Web SSO.

Unilogins OIDC-løsning er et alternativ til Unilogins SAML-løsning, som begge integrerer til Unilogin Brokeren. Læs mere om SAML-løsningen her
OIDC og SAML erstatter begge Unilogins SSOproxy og Atlas løsninger, som begge udfases endegyldigt d. 28. juni 2024.

Samme muligheder som ved SAML

Med OIDC får man samme attributter retur i responset, som hvis man valgte en SAML-løsning. 

Det vil derudover også være muligt at:

  • vælge et af flere mellem flere sikringsniveauer i Requestet
  • benytte licens tjek til at styre brugerens adgang til sin tjeneste. Gå til link

Listen af attributter som er tilgængelige findes i et senere afsnit på denne side.

Implementering af tjeneste

OIDC-løsningen bygger på OIO specifikationen, hvorfor der stilles en række krav til tjenesterne ift. korrekt implementering til Unilogin. For at hjælpe med at foretage integrationen til OIDC har vi udarbejdet en vejledning som tydeliggør krav til en tjeneste implementering. Der findes også en eksempel kode (WIP), Du kan finde begge her

Licens

OIDC-løsningen kan autorisere brugere med Unilogins licenssystem Giv Adgang . Licens til en specifik tjeneste oprettes enten af en brugeradministrator på en institution eller af brugeradministrator for tjenesten selv. En brugeradministrator kan give en klasse, aktørtype eller en institution adgang til en tjeneste. Når brugeren efterfølgende logger på tjekkes det om vedkommende har licens til den specifikke tjeneste. Hvis tjenesten kræver, at brugeren har licens, og brugeren mangler, så vil adgangen blive afvist. Bemærk at det er ikke obligatorisk at benytte licens for at benytte OIDC-løsningen.

Oprettelse af en OIDC tjeneste

Feltspecifikation for oprettelse af OIDC tjeneste

Vi skal bruge metadata om tjenesten for at oprette forbindelse mellem den og Unilogin. Metadata skabelon til oprettelse af tjeneste kan hentes her.

Følgende parametre kan findes i skabelonen. Parametre markeret som krav skal udfyldes. Resterende kan udfyldes efter behov.


Parameter

Type

Værdi

Eksempel

Krav

clientId stringURI med tjenestens ID
"https://tjeneste.domaene.dk/min-tjeneste"
X
redirectUris string[] Array med minimum en URL som brugeren redirectes til ved login. Relative paths kan bruges hvis Root URL er sat, ellers vil server root path blive brugt. Wildcards (*) er ikke tilladt.
[ "https://tjeneste.domaene.dk/login" ] 
[ "/login" ] 

X

udbyderNummer string 

ID som modtages ved oprettelse som udbyder på https://tilslutning.stil.dk/

"A01234" 
X
tjenesteKode string 

Kode der bindes til tjenesten. Dette bruges til tjekke om brugeren har licens til tjenesten. Koden oprettes af tjenesteudbyderen ved registrering af tjenesten i GivAdgang.

"min-tjeneste-kode" 
(X)
kun et krav hvis der benyttes licens
manglerLicensUrl string Link der redirectes til, hvis brugeren der logger ind mangler licens til tjenesten. Hvis denne ikke er udfyldt, redirected brugere uden licens ikke væk, men logges in med response-parameter "has_license" : "false"
"https://tjeneste.domaene.dk/mangler-licens
(X)
kan benyttes hvis det ønskes at brugeren automatisk redirectes til den ønskede URL hvis brugeren mangler licens
namestring Tjenestens navn
"Min Tjeneste" 
X
description string Beskrivelse af tjenesten (max. 255 tegn)
"Min Tjeneste har dette formål:" 

rootUrl string Grund URL, som redirectsUris kan bruge til relative paths
"https://tjeneste.domaene.dk"

webOrigins string[]Array med URI'er som tjenesten tillader til CORS (Cross-Origin Resource Sharing)
[ "https://domaene2.dk" ]

Eksempel på udfyldt OIDC metadata

Metadata med eksempel data

{
    "clientId""https://tjeneste.domaene.dk/min-tjeneste",
    "redirectUris": [
        "https://tjeneste.domaene.dk/login"
    ],
    "attributes": {
        "udbyderNummer""A01234",
        "manglerLicensUrl""https://tjeneste.domaene.dk/mangler-licens",
        "tjenesteKode""min-tjeneste-kode",
        "pkce.code.challenge.method": "S256",
        
        "login_theme""unilogin"
    },
    "protocol""openid-connect",
    "publicClient"false,
    "name""Min Tjeneste",
    "description""Min Tjeneste har dette formål...",
    "rootUrl""https://tjeneste.domaene.dk",
    "webOrigins": [
        "https://domaene2.dk"
    ]
}

OIDC attributter i responset

Efter brugeren har logget ind gennem Unilogin, og ender tilbage på tjenesten, vil tjenesten modtage nogle attributter fra brugerens ID token. Disse attributter kan derefter benyttes af tjenesten til at bestemme hvilke yderligere handlinger der skal tages, og hvilke ressourcer på siden, som brugeren skal have adgang til.

De forskellige claims inkluderet i respons kan ses i følgende tabel:

Claim

Obligatorisk

Fulde navn

Beskrivelse

Eksempel værdier på felter

Note

exp
jaExpiration time Udløbstidspunkt for token
1680093037

iat
jaIssued atTidspunktet token blev udstedt, som et JSON nummer
1680092737

auth_time
jaTime for End-User authenticationTidspunktet autentifikationen skete, som et JSON nummer
1680092737

jti
jaJWT IDEt unikt ID for token
5d77a80b-47e7-4cfa-8029-8a648be6e3f4

iss
jaIssuer IdentifierID for udsteder af token. Denne er tilsvarende attributten "Broker" ved SAML login.
https://broker.unilogin.dk/auth/realms/broker

aud
jaAudienceModtager af tokenen, i form af et EntityID
https://tjeneste.domaene.dk/min-tjeneste

azp
jaAuthorized partyDem som ID tokenen er udstedt til
https://tjeneste.domaene.dk/min-tjeneste

acr
jaAuthentication Context Class ReferenceBruges til NSIS sikringsniveau
https://data.gov.dk/concept/core/nsis/loa/Low
https://data.gov.dk/concept/core/nsis/loa/Substantial

NSIS niveau "High" vil ikke kunne forekomme da Unilogin Brokeren bliver anmeldt på niveau "Substantial" https://data.gov.dk/concept/core/nsis/loa/High

typ
jaToken CategoryType af token (Sættes af keycloak. Sættes som ID ved testtjenesten)
Bearer

nonce
jaNumber onceString som bruges til at tilknytte klientsessionen med en ID token
621aa767f3d501a2d85ef9bd7632a6d5

session_state
jaSession StateBruges til Session Management
b3ff44a3-055f-40c5-a40c-26d265785976

sub
jaSubject Identifier

Tjenestespecifikt pseudonym for brugeren som logger ind.

Pr. default sættes brugerens BrokerID som sub. For at der bruges et tjenestespecifikt pseudonym for tjenester tilkoblet OIDC protokollen, kan der oprettes en protokol mapper på klienten af typen 'Pairwise subject identifier'. Den opretter et pseudonym for brugeren og sætter den på brugerens profil, når de logger ind.

dd0fa533-fe2f-45f8-a2c9-f65503df7c68

Claim

Obligatorisk

Scope 

Beskrivelse

Eksempel værdier på felter

Note

has_licensenej
UserHasLicenseClientScope
GivAdgang specifikt felt. Boolean værdi om brugeren har licens til udbyder/tjeneste
true/false
Er false når bruger mangler licens, og manglerLicensUrl ikke er udfyldt på klienten
institution_idsnej
InstitutionIdsClientScope
GivAdgang specifikt felt. Institutioner som brugeren er tilknyttet OG har licens til999904, R00147
spec_vernej
OidcSpecVersionClientClaim
Brugerdefineret felt, som angiver OIDC versionen ["OIDC.3.0-UNILOGIN"]
"OIDC.3.0-UNILOGIN"

aktoer_gruppenej
OidcAktoerGruppeClientClaim
Brugerdefineret felt, som indeholder aktørgruppe, som bruger vil logge ind med
Medarbejder/Elev/Ekstern/Kontaktperson

uniidnej
OidcUniIdClientClaim
Brugerdefineret felt, som indeholder brugers UniID
1000013b36, henr276q

UniID'et vil fremadrettet bestå af 10 tegn (tal og bogstaver) i vilkårlig rækkefølge (hexadecimal). Skiftet vil ske løbende per leverandør henover perioden, og der vil derfor være forskel på, hvornår den enkelte institution og/eller leverandør vil opleve skiftet. 
unilogin_loanej
OidcUniloginLoaClientClaim
Brugerdefineret felt, indeholder dk:unilogin:loa [EnFaktor, ToFaktor]
EnFaktor/ToFaktor/VoksenVerificeret

loanej
OidcAssuranceLevelClientClaim

Brugerdefineret felt, indeholder dk:gov:saml:attribute:AssuranceLevel [2, 3]

 

2/3

Bliver på sigt udfaset og erstattet med NSIS niveau i acr parameteren

cvrnej
OidcCvrClientClaim
Brugerdefineret felt, som angiver erhvervsprofilens CVR
32145698
Denne værdi kommer kun med ved login med NemLog-in
På sigt vil dette også blive returneret ved login med Unilogin. 
ridnej
OidcRidClientClaim
Brugerdefineret felt, som angiver erhvervsprofilens RID
12345678
Denne værdi kommer kun med ved login med NemLog-in.



Tilslutning til OIDC 

Gælder både for tilslutning til fuld OIDC og letvægtsløsningen 

Undersøg om du opfylder forudsætningerne for at blive tilsluttet

Kontakt supporten for at :

  • Blive oprettet som udbyder, hvis I ikke allerede er det
  • Bestille tilslutning af jeres tjeneste til OIDC, herunder udveksling af OIDC metadata

For at blive oprettet på det eksterne testmiljø skal følgende være opfyldt:

  1. Download metadata skabelonen og udfyld relevante punkter om testtjenesten
  2. Testmetadata skal sendes i JSON-format (.json)
  3. Testmetadata skal navngives på formen supportsagsnummer_test_oidc_metadata.json (fx infrasup-98765_test_oidc_metadata.json)

Bemærk at før tjenesten kan komme på produktionsmiljøet skal følgende være opfyldt:

  1. Der skal indsendes en erklæring om at login i tjenesten via Unilogin alene tjener et relevant formål i forhold til skoler og institutioner. Herunder eksempler på skoler og institutioner der anvender tjenesten.
  2. Download metadata skabelonen og udfyld relevante punkter om tjenesten
  3. Produktionsmetadata skal sendes i JSON-format (.json)
  4. Produktionsmetadata skal navngives på formen supportsagsnummer_prod _oidc_metadata.json (fx infrasup-98765_prod_oidc_metadata.json)
  5. Integrationen til Unilogin Broker skal overholde OIO OIDC specifikationen.
  6. Slutteligt skal der anmodes om en tilslutning af tjenesten til "Unilogin Broker OIDC" på tilslutning.stil.dk

 

Administrer - herunder tilslutning til yderligere services og evt. anmodning om dataadgange - din tilslutning til Unilogin OIDC (gælder både for fuld OIDC og Letvægtsløsning) på tilslutning.stil.dk


  • Ingen etiketter