Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

draw.io Diagram
borderfalse
diagramNamepoc3
simpleViewerfalse
width
linksauto
tbstyleinline
lboxtrue
diagramWidth323471
height181241
revision12

  1. Användaren riktar sin browser mot URL för Webbapp. Webbapp konstaterar att användaren inte är inloggad (avsaknad av session-cookie).
  2. Webbapp startar OAuth Authentication code flow mot Keycloak (delkomponent i System) som vidarebefodrar (via redirect, alltså via Användare, visas ej i diagram) användaren mot

...

  1. login-sida som också tillhandahålls av Keycloak.
  2. Keycloak (i egenskap av SAML-SP) initierar SAML AuthnRequest mot SAML-IDP. Detta

...

  1. sker också genom redirect via Användare som är den som egentligen utför AuthnRequest mot IDP (syns ej i diagram). Slutresultatet är att Användare blir presenterad med inloggningssida hos SAML IDP.
  2. Användare autentiserar sig (i denna implementation genom username/password snarare än e-legitimation, av praktiska skäl).
  3. Efter autentisering returneras resultat i form av SAML Response till Keycloak/SP. Detta sker också via Användare (syns ej i diagram). Keycloak sparar tills vidare Response.
  4. Keycloak

...

  1. slutför code flow genom att returnera Authz code och Webbapp använder denna mot token-endpoint (syns ej i diagram). Keycloak tillverkar och returnerar Access token till Webbapp och upprättar inloggningsession för användaren.

Steg 2 - Interaktion med lokal auktorisationstjänst och SSO mot IDP

...

draw.io Diagram
borderfalse
diagramNamepoc5
simpleViewerfalse
width
linksauto
tbstyleinline
lboxtrue
diagramWidth241471
height181251
revision12

  1. Användare (inloggad) utför något i System som föranleder API-anrop till API i organisation B (trycker på en knapp/länk). Detta kan ske direkt efter inloggning eller efter att en viss tid passerat.
  2. System startar OAuth Authentication code flow mot AS-A (en instans av Keycloak) och anger scope ("refapi") som gäller för kommande (i steg 3) API-anrop.

...

  1. AS-A som tar emot anropet vidarebefodrar (via redirect, alltså via Användare, visas ej i diagram) användaren mot login-sidan som också tillhandahålls av AS-A.
  2. Keycloak (i egenskap av SAML-SP

...

  1. ) initierar SAML AuthnRequest mot SAML-IDP. Detta

...

  1. sker också genom redirect via Användare som är den som egentligen utför AuthnRequest mot IDP (syns ej i diagram). Slutresultatet är att Användare blir presenterad med inloggningssida hos SAML IDP.
  2. Användare autentiserar sig (i denna implementation genom username/password snarare än e-legitimation, av praktiska skäl.
  3. Efter autentisering returneras resultat i form av SAML Response till

...

  1. AS-A (SP). Detta sker också via Användare (syns ej i diagram). Keycloak sparar tills vidare Response.

...

  1. AS-A slutför code flow genom att returnera Authz code och Webbapp denna mot token-endpoint (syns ej i diagram). AS-A har nu en session avseende Användare. AS-A tillverkar och signerar JWT (user_JWT). Refresh_token tillverkas också vars giltighetstid speglar den tid
  2. Keycloak returnerar user_JWT samt refresh_token till System. 

User_JWT har en giltighetstid som är relativt kort (xx minuter). Refresh_token har en giltighetstid som speglar hur länge förnyelse kan göras. Om förnyelse av user_JWT behöver göras medans giltighet för refreshtoken finns:

draw.io Diagram
borderfalse
diagramNamepoc3b
simpleViewerfalse
width
linksauto
tbstyleinline
lboxtrue
diagramWidth471
height161
revision1

  1. (Eventuellt) Användare utför åtgärd som kräver giltig user_JWT. Detta kan lika gärna vara något som initieras från internt i System. System upptäcker att giltighet user_JWT har passerats.
  2. System initierar token fresh mot AS-A
  3. AS-A tillverkar ny user_JWT och signerar denna
  4. AS-A returnerar user_JWT

Om refresh inte är möjlig (giltighet passerad), men AS-A fortfarande har en aktiv session för användaren kan AS-A generera user_JWT utan SSO mot SAML IDP

draw.io Diagram
borderfalse
diagramNamepoc3c
simpleViewerfalse
width
linksauto
tbstyleinline
lboxtrue
diagramWidth471
height161
revision1

  1. (Eventuellt) Användare utför åtgärd som kräver giltig user_JWT. Detta kan lika gärna vara något som initieras från internt i System. System upptäcker att giltighet user_JWT har passerats.
  2. System initierar OAuth Authentication code flow mot AS-A. AS-A har en aktiv session mot användaren och behöver inte (åter-)autentisera användaren. AS-A avslutar code flow genom redirect enligt standard, men utan att användare behöver mata in kreditiv. System får authz code och använder denna mot token endpoint (syns ej i diagram). 
  3. AS-A tillverkar ny user_JWT och signerar denna
  4. AS-A returnerar user_JWT

Om AS-A inte har en aktiv session för användaren blir flödet i stället enligt första diagrammet ovan med SSO mot SAML IDP.

...

Steg 3 - Begäran av åtkomstintyg från organisation B

...