Versions Compared

Key

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

...

Info

Disclaimer: Deze pagina’s worden regelmatig bijgewerkt zodat ze altijd de meeste recente informatie bevatten. Aarzel niet om feedback te geven mochten er aanpassingen nodig zijn.

Authenticatie via Vlaams Toegangsbeheer

Bij Mijn Burgerprofiel gebruiken we het Vlaams Toegangsbeheer om authenticatie te faciliteren. Deze component voorziet automatisch single sign-on-functionaliteit (SS0-functionaliteit) zodat een burger zich niet telkens opnieuw moet aanmelden in verschillende applicaties.

...

  • een beperkte levensduur - kies een duurtijd van < 5 minuten

  • aanmelden moet in dezelfde browserinstantie

  • geen garantie dat de gebruikerscontext bewaard blijft tussen de verschillende applicaties

  • bij embedded gebruik kan de functionaliteit geïmpacteerd worden door de third-party cookieproblematiek

Single Sign-on via token

Note

Deze functionaliteit is alleen beschikbaar als de Aanvraagmodule beschikt over een OpenID-Connect integratie met het Vlaams Toegangsbeheer.

Om een aantal beperkingen bij de klassieke werking van single sign-on op te lossen, gebruiken we Token Exchange om een OAuth Access Token te generen dat de Aanvraagmodule kan gebruiken.

Voorwaarde

Stroomdiagram

Drawio
zoom1
simple0
inComment0
custContentId5866062908
pageId5848175061custContentId5866062908
lbox1
diagramDisplayNameformulieren-sso-token-exchange.drawio
contentVer1
revision1
baseUrlhttps://vlaamseoverheid.atlassian.net/wiki
diagramNameformulieren-sso-token-exchange.drawio
pCenter0
width941
links
tbstyle
height641

Implementatie

Standaard maakt de Aanvraagmodule gebruik van OpenID Connect (op basis van Authorization Code grant) voor geauthenticeerde formulieren. Dit verloopt vlot voor formulieren die in stand-alone modus getoond worden.

Note

Voor formulieren die embedded worden getoond, kan de burger een fout te zien krijgen tijdens het OpenID Connect-aanmeldproces omdat de Identity Provider (ACM) cookies nodig heeft. Doordat de Identity Provider op een ander domein werkt dan burgerprofiel.be, zal hij die niet kunnen opslaan. Vandaag blokkeren de meeste browsers immers Third Party Cookies. Als de browser wel Third Party Cookies toelaat, is er geen probleem.

Gebruikerscontext doorgeven aan een Aanvraagmodule

Hiervoor moet mijn Burgerprofiel het OAuth Access Token - verkregen via de Token Exchange - doorgeven. Door de gevoeligheid van het OAuth Access Token moet dit altijd via een server-to-server operatie verlopen als volgt:

...

Info

Opmerking: Mijn Burgerprofiel zal gebruik maken van de Client-ID vermeld in de Formulieren API response om de “audience” claim correct in te stellen tijdens het Token Exchange proces.

Aanvraagmodule - SSO Token (Swagger)

Swagger integration
docExpansionlist
{
  "openapi": "3.0.2",
  "info": {
    "title": "Aanvraagmodule - SSO Token",
    "version": "1.0"
  },
  "components": {
    "schemas": {
      "RequestToken": {
        "type": "object",
        "required": [
          "token",
          "token_type"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "Token ontvangen via IdP Token Exchange"
          },
          "token_type": {
            "type": "string",
            "description": "Type token ontvangen via IdP Token Exchange",
            "enum": [
              "urn:ietf:params:oauth:token-type:access_token"
            ]
          }
        }
      },
      "ResponseTempToken": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "Tijdelijk SSO Token"
          }
        }
      },
      "ClientError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Foutmelding"
          }
        }
      },
      "ServerError": {
        "type": "string"
      }
    }
  },
  "servers": [
    {
      "description": "Form provider",
      "url": "https://formulier.vlaanderen.be"
    }
  ],
  "paths": {
    "/auth/v1/token": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestToken"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/RequestToken"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Vraagstelling is geaccepteerd en een tijdelijk token werd gegenereerd",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseTempToken"
                }
              }
            }
          },
          "400": {
            "description": "Vraagstelling ontbreekt verplichte velden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientError"
                }
              }
            }
          },
          "401": {
            "description": "Ongeldig of vervallen token in de vraagstelling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientError"
                }
              }
            }
          },
          "500": {
            "description": "Onverwacht probleem opgetreden in de applicatie bij het verwerken van het token",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ServerError"
                }
              }
            }
          }
        }
      }
    }
  }
}

...

https://formulier.vlaanderen.be/f6d35977-f45d-4710-befc-21e2812d83ea?token=<TEMP-TOKEN>

Het token verwerken in de Aanvraagmodule

Doorloop de volgende stappen nadat de Aanvraagmodule het token heeft ontvangen:

...

Indien aan alle voorwaarden is voldaan, kan de Aanvraagmodule een nieuwe sessie opstarten op basis van de gebruikerscontext die beschikbaar is via het OAuth Access Token.

Anchor
bijlage-mbp-client-id
bijlage-mbp-client-id
Bijlage - Mijn Burgerprofiel Client-ID

Client-ID

Omgeving

URL

80689076-8c4a-4bef-abc4-82805e17988d

TNI

https://burgerprofiel.tni-vlaanderen.be

88f04968-d331-4ae0-99d9-c6efb845841f

Productie

https://www.burgerprofiel.be