...
draw.io Diagram |
---|
border | false |
---|
| |
---|
diagramName | poc3 |
---|
simpleViewer | false |
---|
width | |
---|
links | auto |
---|
tbstyle | inline |
---|
lbox | true |
---|
diagramWidth | 323471 |
---|
height | 181241 |
---|
revision | 12 |
---|
|
- Användaren riktar sin browser mot URL för Webbapp. Webbapp konstaterar att användaren inte är inloggad (avsaknad av session-cookie).
- 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 Keycloak authorization-endpointlogin-sida som också tillhandahålls av Keycloak.
- Keycloak (i egenskap av SAML-SP) initierar SAML AuthnRequest mot SAML-IDP. Detta resulterar i att användare blir vidarebefodrad (redirect) mot SAML-IDP.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.
- Användare autentiserar sig (i denna implementation genom username/password snarare än e-legitimation, av praktiska skäl)(Eventuellt) Om behov av autentisering av användare behövs så presenteras inmatning av kreditiv för användare.
- 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.
- Keycloak returnerar Authz Code till Webbapp
- Webbapp använder Code mot Token-endpoint i Keycloak. Keycloak överför eventuell information till access token.
- Keycloak returnerar Access token och användaren är inloggad i Webbapp. Webbapp upprättar session-cookie i webbläsareslutfö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 |
---|
border | false |
---|
| |
---|
diagramName | poc5 |
---|
simpleViewer | false |
---|
width | |
---|
links | auto |
---|
tbstyle | inline |
---|
lbox | true |
---|
diagramWidth | 241471 |
---|
height | 181251 |
---|
revision | 12 |
---|
|
- 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.
- 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. Detta vidarebefodrar (redirect) användaren mot Keycloak authorization-endpointAS-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.
- Keycloak (i egenskap av SAML-SP / webSSO) initierar SAML AuthnRequest mot SAML-IDP. Detta resulterar i att användare blir vidarebefodrad (redirect) mot SAML-IDP.
- (Eventuellt) Om behov av autentisering av användare behövs så presenteras inmatning av kreditiv för användare.
- 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.
- Användare autentiserar sig (i denna implementation genom username/password snarare än e-legitimation, av praktiska skäl.
- Efter Efter autentisering returneras resultat i form av SAML Response till KeycloakAS-A (SP). Detta sker också via Användare (syns ej i diagram). Keycloak sparar tills vidare Response.
- Keycloak returnerar Authz Code till System
- System använder Code mot Token-endpoint i Keycloak. Keycloak överför information från Response (AttributeStatement, LOA) och anger andra relevanta claims (sub, aud, iss, scope etc.) till signerad JWT ("user-JWT") och signerar denna med nyckel vars publika del finns i metadata.
Keycloak returnerar user-JWT till System- 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
- 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 |
---|
border | false |
---|
| |
---|
diagramName | poc3b |
---|
simpleViewer | false |
---|
width | |
---|
links | auto |
---|
tbstyle | inline |
---|
lbox | true |
---|
diagramWidth | 471 |
---|
height | 161 |
---|
revision | 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.
- System initierar token fresh mot AS-A
- AS-A tillverkar ny user_JWT och signerar denna
- AS-A returnerar user_JWT
Om refresh inte är möjlig (giltighet passerad), återgår man till det initiala flödet med code flow mot AS-A för att ny autentisering av användaren ska kunna ske mot SAML IDP.
Steg 3 - Begäran av åtkomstintyg från organisation B
...
draw.io Diagram |
---|
border | false |
---|
| |
---|
diagramName | poc8poc6b |
---|
simpleViewer | false |
---|
width | |
---|
links | auto |
---|
tbstyle | inline |
---|
lbox | true |
---|
diagramWidth | 361381 |
---|
height | 41251 |
---|
revision | 12 |
---|
|
- System har nu user-JWT från tidigare steg. System tillverkar en "client-JWT" enligt JWT Profile for Client Authentication. Både user-JWT och client-JWT anges i anrop till AS-B enligt RFC7523 samt scope "refapi".
- AS-B tar emot förfrågan och verifierar
- client-JWT - att identitet (iss) går att slå upp som entitet i metadata
- client-JWT - att signatur går kan verifieras genom nyckelmaterial på entitet i metadata
- client-JWT - att entitet (iss) har tillitsmärke för "EFI-pilot-tjänsteleverantor" knuten till sig
- client-JWT - att klient finns med i whitelist för klienter
- user-JWT - att identitet (iss) går att slå upp som entitet i metadata
- user-JWT - att signatur kan verifieras genom nyckelmaterial på entitet i metadata
- user-JWT - att entitet (iss) har tillitsmärke för "EFI-pilot-identitet" och "EFI-pilot-behorighet" knuten till sig
- AS-B tillverkar access token med sig själv som issuer, för över relevant information from user-JWT (samt eventuellt client-JWT) och krypterar denna. AS-B returnerar access token till System
...