Versions Compared

Key

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

...

Naam

Beschrijving

<MBP-CLIENT-ID>

Bevat de Mijn Burgerprofiel Client-ID (zie Bijlage - Mijn Burgerprofiel Client-ID).

<OIDC-ACCESS-TOKEN>

OpenID Connect Access Token verkregen door gebruik te maken van authorization code grant of via uitvoeren van refresh.

<APP-CLIENT-ID>

Client-ID van de applicatie (zie Client Authenticatie voor alternatieven).

<APP-CLIENT-SECRET>

Client Secret van de applicatie (zie Client Authenticatie voor alternatieven).

Info

Opmerking: in ons code voorbeeld maken we gebruik van het codevoorbeeld gebruiken we een Client-ID en Secret. Echter Deze informatie kan deze informatie ook als Basic Authentication toegevoegd worden.

In geval van Bij een asymmetrisch sleutelpaar dient men gebruik te maken van is client assertion nodig. Zie documentatie ook Client Authenticatie voor meer informatie en voorbeelden.

Na het succesvol uitvoeren van de Token Exchange zal krijgt de applicatie onderstaand het onderstaande antwoord verkrijgen.:

Code Block
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "issued_token_type":"urn:ietf:params:oauth:token-type:access_token",
  "access_token": "ZC5-A1AkXUzXRKb71sAIHBl9F87F18anzEaQy6G6KFD",
  "expires_in": 3600,
  "scope": "profile rrn",
  "token_type": "Bearer"
}

Gebruikerscontext doorgeven aan Mijn Burgerprofiel

Om gebruikercontext gebruikerscontext door te geven aan Mijn Burgerprofiel dient men moet het OAuth Access Token - verkregen via de voorgaande Token Exchange operatie door te geven- worden doorgegeven. Gezien de gevoeligheid van het OAuth Access Token dient deze steeds moet dit altijd via een server-to-server operatie te verlopen.

Swagger integration
docExpansionlist
{
  "openapi": "3.0.2",
  "info": {
    "title": "Mijn Burgerprofiel - 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": "TNI",
      "url": "https://burgerprofiel.tni-vlaanderen.be"
    },
    {
      "description": "Productie",
      "url": "https://www.burgerprofiel.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"
                }
              }
            }
          }
        }
      }
    }
  }
}

Info

Opmerking: het tijdelijk token dat men verkrijgt via de API-endpoint kan slecht eenmalig maar één keer gebruikt worden. Daarnaast heeft deze ook een heel korte levensduur (ca 2 min) voordat het vervalt.

Als laatste dient men vervolgens het tijdelijk token door te geven

Bovendien vervalt het na ongeveer 2 min.

Tot slot moet het tijdelijk token worden doorgegeven als query parameters van de Mijn Burgerprofiel-URL. Onderstaand alvast enkele Een aantal voorbeelden van zo een URLsdit type URL's:

  • TNI:

    • https://burgerprofiel.tni-vlaanderen.be/?token=<MBP-TEMP-TOKEN>

    • https://burgerprofiel.tni-vlaanderen.be/meldingen?token=<MBP-TEMP-TOKEN>

  • Productie:

    • https://www.burgerprofiel.be/?token=<MBP-TEMP-TOKEN>

    • https://www.burgerprofiel.be/meldingen?token=<MBP-TEMP-TOKEN>

...