Link Search Menu Expand Document

Overview

itsme® API is based on the Authorization Code Flow of OpenID Connect 1.0. The API can be used to verify the end-users’ identity and obtain basic profile information about gien end-users.

The diagram below describes the Identification process and how your systems should integrate with itsme® :

Sequence diagram describing the OpenID flow

To get to this result please make sure you

  1. add itsme® button to your front-end page so the user can indicate he wishes to authenticate with itsme® : itsme® button specifications.
  2. create the Authorization Request to authenticate the User. This request will redirect the user to the itsme® app. itsme® will then authenticates the user by asking him
    • to enter his phone number on the itsme® sign-in page
    • authorize the release of some information to your application
    • to provide his credentials (itsme® code, fingerprint or FaceID)

    It is also in this Authorization Request that you will be able to request claims about the user and the Identification event.
  3. collect the Authorization Code once the user has been authenticated and redirected by itsme® to your mobile or web application.
  4. exchange the Authorization Code for an ID token (e.g. identifying the user) and an Access Token.
  5. Obtain the additional claims by presenting the access token to the itsme® UserInfo Endpoint if the required claims are not returned in the ID token.
  6. Confirm the success of the operation and display a success message.

Guides

Generate itsme® button

First, you will need to create a button to allow your users to authenticate with itsme®. Check the Button design guide before you start the integration.

Upon clicking this button, the user will be redirected to our Front-End. itsme® then take care of authenticating him.

Securing the exchange of information

To protect the exchange of sensitive information and ensure the requested information gets issued to a legitimate application and not some other party, the OpenID Connect protocol uses JSON Web Token (JWT) which can be signed and/or encrypted. Among the methods described in OpenID specification, itsme® supports 2 authentication methods to secure communications between your backend and itsme®:

  • "Private key JWT" is based on a public/private key pair (asymmetric encryption). It is therefore the most secure option
  • "Client secret" is based on a shared Secret key (symmetric encryption). It can be easier to implement in some cases

Public- and private-key method and JWKSet URI

This method uses linked public- and private-key pairs to encrypt and decrypt senders’ and recipients’ sensitive data. It is also known as public-key cryptography or public-key encryption.

Using the jwks_uri key retrieve the URI for itsme® from the itsme® Discovery document, .

Your public and private key can be generated using your own tool or via Yeoman. If using Yeoman, you need to install generator-itsme with NPM:

$ npm install -g yo generator-itsme

After installation, run the generator:

$ yo itsme

The Yeoman tool will generate two files, the jwks_private.json which MUST be stored securely in your system, and the jwks_public.json which needs to be exposed as a JWK Set on a URI publicly accessible and have the HTTPS scheme (Refer to this section for more information).

Secret key method

Secret key cryptography method uses the same secret key to encrypt and decrypt sensitive information. This approach is the inverse of public- and private-key encryption.

This method requires the exchange of a static secret to be held by both the sender and the data receiver. The secret value will be provided by itsme® when registering your project.

PKCE-enhanced flow

Whatever the chosen authentication method, itsme® also supports an extra security extension named Proof of Key for Code Exchange (PKCE). This additionnal layer of security is intended mitigate some Authorization Code interception attacks. We strongly advise to enable enforcement of this mechanism. Please ask our onboarding team to do so when registering your project.

PKCE implies choosing a random string, named code_verifier, and then generating a SHA256 hash of that string, named code_challenge. The code_challenge has to be sent along with the Authorization Request, while the code_verifier must be sent with the Token Request, allowing our backend to make sure both requests are issued by the same source.

code_challenge can then be obtained via this kind of instructions:

var hash = code_verifier.createHash('sha256');
var code_challenge = base64url.encode(hash);

Signing, encrypting and decoding JWTs

Libraries implementing JWT and the JOSE specs JWS, JWE, JWK, and JWA are listed here.

Certificates and website security

itsme® requires https connections to guarantee security. With the https protocol, a web site operator obtains a certificate by applying to a certificate authority with a certificate signing request. The certificate request is an electronic document that contains the web site name, company information and the public key. The certificate provider signs the request, thus producing a public certificate. During web browsing, this public certificate is served to any web browser that connects to the web site and proves to the web browser that the provider believes it has issued a certificate to the owner of the web site.

A certificate provider can opt to issue three types of certificates, each requiring its own degree of vetting rigor. In order of increasing rigor (and naturally, cost) they are: Domain Validation, Organization Validation and Extended Validation.

The Domain Validation certificate doesn’t provide sufficient identity guarantees to itsme. So, only the Organization Validation and Extended Validation certificates are supported. For example, using the Let’s Encrypt open certificate authority is not suffcient because it only provide standard Domain Validation certificates.

Handling responses

Whenever a partner is sending a request to the itsme OIDC endpoints he will get a response back. According to the OIDC protocol, and depending on the endpoint that was contacted, partners can get a

  • response where some parameters are added to the query component of the redirection URI using the application/x-www-form-urlencoded format, or
  • response displayed directly on our itsme® sign-in page ;
  • response using the application/json media type

Alongside the type of response an HTTP status code is sent that shows whether the request was successful or not. If it was not, you can tell by the code and the message in the response what went wrong, why it went wrong and whether there is something the partner can do about it.

A successful response

An HTTP status 200 OK or 302 Found is issued whenever your request was a success. You see this type of response in our examples like the one where we successfully retrieve the Token Response :

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

{
  "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc
    yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5
    NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ
    fV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5Nz
    AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q
    Jp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ
    NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd
    QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoS
    K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4
    XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"
  "access_token": "SlAV32hkKG",
  "token_type": "Bearer",
  "expires_in": 3600,
}

The error responses

Things will sometimes go wrong. So, OpenID Connect defines a number of rules regarding the format of errors returned from our endpoints.

Authorization Endpoint errors

If the request fails due to a missing, invalid, or mismatching redirection URI, or if the client identifier is missing or invalid,… the Authorization Endpoint will inform you of the error our itsme® sign-in page.

Authorization Endpoint error reponse

If the User denies the access request or the User authentication fails, the Authorization Endpoint will inform you by adding the following parameters to the query component of the redirection URI using the application/x-www-form-urlencoded format :

error
REQUIRED
A single ASCII error code.
invalid_request
The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.
access_denied
The User or the Authorization Endpoint denied the request.
login_required
The Authorization Endpoint requires User authentication. This error MAY be returned when the prompt parameter value in the Authorization Request is none
interaction_required
The Authorization Endpoint requires User interaction of some form to proceed. This error MAY be returned when the prompt parameter value in the Authorization Request is none, but the Autorization Request cannot be completed without displaying a user interface for User interaction.
unsupported_request
The request contains a not supported parameter.
invalid_client_id
The request contains an invalid client_id.
invalid_redirect_uri
The request contains an invalid redirect URI.
unsupported_grant_type
Grant type not supported.
invalid_grant
Invalid grant.
invalid_scope
The requested scope is invalid, unknown, or malformed.
unsupported_display
Only page is supported.
unauthorized_client
Unknown or unspecified client_id.
unsupported_response_type
The Authorization Endpoint does not support obtaining an authorization code using this method.
invalid_request_object
The request parameter contains an invalid Request Object.
invalid_request_uri
The request_uri in the Authorization Request returns an error or contains invalid data.
invalid_request
Oauth2 parameters do not match Request object.
temporary_unavailable
The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
error_description
OPTIONAL
Human-readable text providing additional information, used to assist the developer in understanding the error that occurred.
state
The string value provided in the Authorization Request. You SHOULD validate that the value returned matches the one supplied.

For example :

HTTP/1.1 302 Found Location: https://client.example.com/cb?error=access_denied&state=xyz

Token Endpoint errors

If the request fails the Token Endpoint responds with an HTTP 400 (Bad Request) status code (unless specified otherwise) and includes the following parameters in the entity-body of the HTTP response using the application/json media type :

error
REQUIRED
A single ASCII error code.
invalid_request
The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed.
invalid_client
Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).
invalid_grant
The provided authorization grant (e.g., authorization code, resource owner credentials) is invalid, expired or does not match the redirection URI used in the authorization request.
unauthorized_client
The authenticated client is not authorized to use this authorization grant type.
error_description
OPTIONAL
Human-readable text providing additional information, used to assist the developer in understanding the error that occurred.

For example :

HTTP/1.1 400 Bad Request 
Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache 

{ 
  "error":"invalid_request" 
}

UserInfo Endpoint errors

When a request fails, the UserInfo Endpoint responds using the appropriate HTTP status code (typically, 400, 401, 403, or 405) and includes specific error codes in the response.

invalid_request
The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.
invalid_token
The access token provided is expired, revoked, malformed, or invalid for other reasons.

For example :

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Bearer realm="example"

Revocation Endpoint errors

If the request fails the Revoke Endpoint responds with an HTTP 400 (Bad Request) status code and includes the fllowing parameters in the entity-body of the HTTP response using the application/json media type :

error
REQUIRED
A single ASCII error code.
invalid_request
The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed.
invalid_client
Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).
invalid_grant
The provided authorization grant (e.g., authorization code, resource owner credentials) is invalid, expired or does not match the redirection URI used in the authorization request.
unauthorized_client
The authenticated client is not authorized to use this authorization grant type.
unsupported_token_type
itsme® does not support the revocation of the presented access token.
error_description
OPTIONAL
Human-readable text providing additional information, used to assist the developer in understanding the error that occurred.
state
The string value provided in the Authorization Request. You SHOULD validate that the value returned matches the one supplied.

For example:

HTTP/1.1 400 Bad Request 
Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache 

{ 
  "error":"invalid_request" 
}

Mapping the user

Mapping using sub claim

To sign in successfully in your web desktop, mobile web or mobile application, a given user must be mapped to a user account in your database. By default, your application Server will use the subject identifier, or sub claim, in the ID Token to identify and verify a user account. The sub claim is a string that uniquely identifies a given user account. The benefit of using a sub claim is that it will not change, even if other user attributes (email, phone number, etc) associated with that account are updated.

If no user record is storing the sub claim value, then you should allow the user to associate his new or existing account to the sub.

All these flows are depicted in the itsme® B2B portal.

Benefit of sub claim

The benefit of using a sub claim is that it will not change, not even if other user attributes (email, phone number, etc.) associated with that account are updated.

Deleting and re-creating an itsme® account

In a limited number of cases (e.g. technical issue,…) a user could ask itsme® to ‘delete’ his account. As a result the specific account will be ‘archived’ (for compliancy reasons) and thus also the unique identifier(s) (e.g. “sub”).

If the same user would opt to re-create an itsme® afterwards, he will need to re-bind his itsme® account with your application server, in the same way as for the initial binding. After successful re-binding you will need to overwrite the initial reference with the new sub claim value in your database.

API reference

itsme® Discovery Document

  • GET https://idp.[e2e/prd].itsme.services/v2/.well-known/openid-configuration

    To simplify implementations and increase flexibility, OpenID Connect allows the use of a Discovery Document, a JSON document containing key-value pairs which provide details about itsme® configuration, such as the

    Authorization, Token and userInfo Endpoints Supported claims ...
  • GET https://oidc.[e2e/prd].itsme.services/clientsecret-oidc/csapi/v0.1/.well-known/openid-configuration

    To simplify implementations and increase flexibility, OpenID Connect allows the use of a Discovery Document, a JSON document containing key-value pairs which provide details about itsme® configuration, such as the

    Authorization, Token and userInfo Endpoints Supported claims ...

Authorization Request

  • GET https://idp.[e2e/prd].itsme.services/v2/authorization

    Parameters

    client_id
    REQUIRED
    It identifies your application. This parameter value is generated during registration.
    response_type
    REQUIRED
    This defines the processing flow to be used when forming the response. Because itsme® supports the Authorization Code Flow, this value MUST be code.
    scope
    REQUIRED
    It allows your application to express the desired scope of the access request. Each scope returns a set of user attributes. The scopes an application should request depend on which user attributes your application needs. Once the user authorizes the requested scopes, his details are returned in an ID Token and are also available through the UserInfo Endpoint.

    All scope values must be space-separated.

    The basic (and required) scopes are openid and service. Beyond that, your application can ask for additional standard scopes values which map to sets of related claims are: profile email address phone eid
    service
    REQUIRED
    It indicates the itsme® service your application intends to use, e.g. service:TEST_code by replacing "TEST_code" with the service code generated during registration.
    openid
    REQUIRED
    It indicates that your application intends to use the OpenID Connect protocol to verify a user's identity by returning a sub claim which represents a unique identifier for the authenticated user.
    profile
    OPTIONAL
    Returns claims that represent basic profile information, specifically family_name, given_name, name, gender, locale, picture and birthdate.

    If requested, a value SHALL always be returned for the above claims except for the given_name claim which MAY NOT be returned if the user doesn't have any first name(s).
    email
    OPTIONAL
    Returns the email claim, which contains the user's email address, and email_verified, which is a boolean indicating whether the email address was verified by the user.

    If requested, a value SHALL always be returned for the email_verified claim only if email claim is filled with a value, whereas the email claim SHALL always be returned only if the user gave us an email address.
    address
    OPTIONAL
    Returns user's postal address, represented as JSON Object containing some or all of these members formatted street_address postal_code locality

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    phone
    OPTIONAL
    Returns the phone_number claim, which contains the user's phone number, and phone_number_verified, which is a boolean indicating whether the phone number was verified by the user.

    If requested, a value SHALL always be returned for the above claims.
    eid
    OPTIONAL
    Returns the http://itsme.services/v2/claim/BENationalNumbe claim, which contains the unique identification number of natural persons who are registered in Belgium, and http://itsme.services/v2/claim/BEeidSn, which is a string indicating the Belgian ID card number.

    If requested, a value SHALL always be returned for the above claims.
    redirect_uri
    REQUIRED
    It is the URL to which users are redirected once the authentication is complete.

    The following restrictions apply to redirect URIs: The redirect URI MUST match the value preregistered during the registration. The redirect URI MUST begin with the scheme https (refer to this section for more information). There is an exception for localhost redirect URIs that are only permitted for development purposes, it’s not for use in production. The redirect URI SHALL NOT be a custom URL. The fragment identifier introduced by a hash mark # SHALL NOT be used. The redirect URI is case-sensitive. Its case MUST match the case of the URL path of your running application. For example, if your application includes as part of its path .../abc/response-oidc, do not specify .../ABC/response-oidc in the redirect URI. Because the web browser treats paths as case-sensitive, cookies associated with .../abc/response-oidc MAY be excluded if redirected to the case-mismatched .../ABC/response-oidc URL. If relevant (in case you have a mobile app) make sure that your redirect URIs support the Universal links and App links mechanism. Functionally, it will allow you to have only one single link that will either open your desktop web application, your mobile app or your mobile site on the User’s device. Universal links and App links are standard web links (http://mydomain.com) that point to both a web page and a piece of content inside an app. When a Universal Link is opened, the app OS checks to see if any installed app is registered for that domain. If so, the app is launched immediately without ever loading the web page. If not, the web URL is loaded into the webbrowser.
    state
    Strongly RECOMMENDED
    Specifies any string value that your application uses to maintain state between your Authorization Request and the Authorization Server's response. You can use this parameter for several purposes, such as directing the user to the correct resource in your application and mitigating cross-site request forgery.
    nonce
    Strongly RECOMMENDED
    A string value used to associate a session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authorization Request to the ID Token.
    ui_locales
    OPTIONAL
    Indicates the user's preferred languages for the itsme® sign-in page, represented as a space-separated list of language tag values, ordered by preference.

    Possible values : fr nl de en
    display
    OPTIONAL
    Specify how the itsme® sign-in page should be displayed to the user. If set to touch, it SHOULD displays the itsme® sign-in page with a device that leverages a touch interface. If set to page, the itsme® sign-in UI SHOULD be consistent with a full page view of the User-Agent. If the display parameter is not specified, this is the default display mode.
    acr_values
    OPTIONAL
    Indicates the authentication method required to process the request, represented as a space-separated list of tag values, ordered by preference.

    Possible values : http://itsme.services/v2/claim/acr_basic http://itsme.services/v2/claim/acr_advanced

    Note : if these two values are provided only the most constraining authentication method will be applied, e.g. http://itsme.services/v2/claim/acr_advanced.
    http://itsme.services/v2/
    claim/acr_basic
    It lets the user to choose either fingerprint usage (if device is compatible) or itsme® code. If the acr_values parameter is not specified, this is the default authentication method.
    http://itsme.services/v2/
    claim/acr_advanced
    It forces the user to use his itsme® code.
    claims
    OPTIONAL
    Requests specific user's details to be returned from the UserInfo Endpoint or in the ID Token. It is represented as a JSON object that could use as member {"userinfo":{...} - which content indicates which claims to return at the UserInfo Endpoint - or {"id_token":{...} - which indicates those to return at the ID Token -, together with indication whether the claim is voluntary (default) or essential.

    Note: to avoid the need of creating an additionnal request, itsme® recomends to create a JSON object using {"id_token":{...} as member.


    Possible user's details your application can request is listed below.
    name
    OPTIONAL
    Returns user's full name in displayable form including all name parts, possibly including titles and suffixes.

    If requested, a value SHALL always be returned for this claim.
    given_name
    OPTIONAL
    Returns user's given name(s) or first name(s). Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.

    If requested, a value MAY NOT be returned if the user doesn't have any first name(s).
    family_name
    OPTIONAL
    Returns user's surname(s) or last name(s). Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.

    If requested, a value SHALL always be returned for this claim.
    birthdate
    OPTIONAL
    Return user's birthday, represented as a string in YYYY-MM-DD date format.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents. Users with a BE document will always be 16 years old or more, users with a NL document will always be 18 or more.
    http://itsme.services/v2/
    claim/birthdate_as_string
    OPTIONAL
    Returns user's birthday. It is considered as official or at least coming unprocessed from the ID document.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents. Users with a BE document will always be 16 years old or more, users with a NL document will always be 18 or more.
    gender
    OPTIONAL
    Returns user's gender. Possible values are : female male unknown n/a (note: Belgian accounts can only be female or male)

    If requested, a value SHALL always be returned for this claim.
    locale
    OPTIONAL
    Returns user's mobile phone language, represented as a string format. Possible values are : NL FR DE EN

    If requested, a value MAY NOT be returned for this claim.
    picture
    OPTIONAL
    Returns user's ID picture, represented as a URL string. This URL refers to an image file (for example, a JPEG, JPEG2000, or PNG image file).

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents.

    Accessing this URL has to be done with your bearer token. Example:
    GET /v2/picture HTTP/1.1
    Host: idp.prd.itsme.services
    Authorization: Bearer SlAV32hkKG
    email
    OPTIONAL
    Returns user's email address.

    If requested, a value MAY NOT be returned if the user doesn't gave us an email address.
    email_verified
    OPTIONAL
    Returns true if the user's e-mail address is verified; otherwise false.

    Note : currently, itsme® always returns false for this claim because the email verification feature is not yet implemented in our systems.

    If requested, a value SHALL NOT be returned if the email claim is not filled with a value.
    phone_number
    OPTIONAL
    Returns user's phone number, represented as a string format. For example : [+][country code] [subscriber number including area code].

    If requested, a value SHALL always be returned for this claim.
    phone_number_verified
    OPTIONAL
    Returns true if the user's phone number is verified; otherwise false.

    If requested, a value SHALL always be returned for this claim.
    address
    OPTIONAL
    Returns user's postal address, represented as JSON Object containing some or all of these members formatted street_address postal_code locality.

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/claim_citizenship
    OPTIONAL
    Returns user's nationality. The format is directly depending on the underlying ID document: for Belgian ID documents this is represented as a string, and for Dutch ID documents this is represented in the ISO 3166-1 alpha-3 format.

    If requested, a value SHALL always be returned for this claim.
    http://itsme.services/v2/
    claim/claim_citizenship_as_iso
    OPTIONAL
    Returns user's nationality. The format is always the ISO 3166-1 alpha-3 format. Please be aware that this claim is computed by itsme® for users with a Belgian ID document on a best effort basis. For the original value as stored on the ID document, see http://itsme.services/v2/claim/claim_citizenship above.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/place_of_birth
    OPTIONAL
    Returns user's place of birth, represented as a JSON Object containing some or all of these members formatted city country.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/physical_person_photo
    OPTIONAL
    Returns user's ID picture, represented as a JSON Object containing some or all of these members format value.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/BEeidSn
    OPTIONAL
    Returns user's Belgian ID document number, represented as a string with 12 digits in the form xxx-xxxxxxx-yy. (the check-number yy is the remainder of the division of xxxxxxxxxx by 97) for Belgian citizens, or starting with a letter and nine digits in the form B xxxxxxx xx for EU/EEA/Swiss citizens.

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/claim_device
    OPTIONAL
    Returns user's phone information, represented as a JSON Object containing some or all of these members os appName appRelease deviceLabel debugEnabled deviceID osRelease manufacturer deviceLockLevel smsEnabled rooted msisdn deviceModel sdkRelease.

    If requested, a value MAY NOT be returned for this claim.
    http://itsme.services/v2/
    claim/transaction_info
    OPTIONAL
    Returns information about the itsme® transaction, represented as a JSON Object containing some or all of these members securityLevel bindLevel appRelease.

    If requested, a value MAY NOT be returned for this claim.
    http://itsme.services/v2/
    claim/BENationalNumber
    OPTIONAL
    Returns user's Belgian unique identification number, represented as a string with 11 digits in the form YY.MM.DD-xxx.cd where YY.MM.DD is the birthdate of the person, xxx a sequential number (odd for males and even for females) and cd a check-digit. Some exceptions could apply.

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/validityFrom
    OPTIONAL
    Returns user's Belgian ID document issuance date, represented as a string in YYYY-MM-DDThh:mm:ss.nnnZ date format specified by ISO 8601. Can only be returned in combination with claim http://itsme.services/v2/claim/BEeidSn.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/validityTo
    OPTIONAL
    Returns user's Belgian ID card expiry date, represented as a string in YYYY-MM-DDThh:mm:ss.nnnZ date format specified by ISO 8601. Can only be returned in combination with claim http://itsme.services/v2/claim/BEeidSn.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and MAY NOT be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/verificationDate
    OPTIONAL
    Returns the date when the user's document was read for the last time, represented as a string in YYYY-MM-DDThh:mm:ss date format, specified by ISO 8601.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/IDDocumentSN
    OPTIONAL
    Returns the Dutch ID card/passport number, represented as a string composed of letters at positions 1 and 2 ; letters or digits from positions 3-8: ; and a digit at position 9. The letter ‘O’ is not used in the document numbers. The digit ‘0’ (zero) MAY be used.

    If requested, a value SHALL always be returned for this claim.
    http://itsme.services/v2/
    claim/IDDocumentType
    OPTIONAL
    Returns the Dutch ID card/passport document type.

    If requested, a value SHALL always be returned for this claim.
    request_uri
    OPTIONAL
    A URL using the https scheme referencing a resource containing a JWT whose claims are the request parameters. The request_uri parameter is used to secure parameters in the Authorization Request from tainting or inspection when sending the request to the itsme® Authorization Endpoint.

    If the request_uri parameter is used, the JWT MUST be signed and MUST contain the claims iss (issuer) and aud (audience) as members. The iss value SHOULD be your client_id. The aud value SHOULD be set to https://idp.[e2e/prd].itsme.services/v2/authorization. The JWT MAY also be encrypted. If both signing and encryption are performed, it MUST be signed then encrypted, with the result being a Nested JWT (refer to this page for more information).

    The following restrictions apply to request URIs: The request URI MUST be preregistered during the registration. The request URI MUST contain the TCP port number 443. Example : https://test.istme.be:443/p/test The request URI MUST begin with the scheme https (refer to this section for more information). The usage of localhost request URIs that are not permitted. The request URI JWT MUST be publicly accessible.
    request
    OPTIONAL
    It represents the request as a JWT whose Claims are the request parameters. The request parameter is used to secure parameters in the Authorization Request from tainting or inspection when sending the request to the itsme® Authorization Endpoint.

    If the request parameter is used, the JWT MUST be signed and MUST contain the claims iss (issuer) and aud (audience) as members. The iss value SHOULD be your client_id. The aud value SHOULD be set to https://idp.[e2e/prd].itsme.services/v2/authorization. The JWT MAY also be encrypted. If both signing and encryption are performed, it MUST be signed then encrypted, with the result being a Nested JWT (refer to this page for more information).
    code_challenge
    OPTIONAL
    A challenge derived from the code verifier by applying a S256 hash. This parameter is REQUIRED if you requested PKCE to be enforced.
    code_challenge_method
    OPTIONAL
    Code verifier transformation method.

    It MUST be set to S256.

    Response

    302 application/x-www-form-urlencoded

    code
    An intermediate opaque credential of 36 characters used to retrieve the ID Token and Access Token.

    Note : the code has a lifetime of 3 minutes.
    state
    The string value provided in the Authorization Request. You SHOULD validate that the value returned matches the one supplied.
  • GET https://oidc.[e2e/prd].itsme.services/clientsecret-oidc/csapi/v0.1/connect/authorize

    Parameters

    client_id
    REQUIRED
    It identifies your application. This parameter value is generated during registration.
    response_type
    REQUIRED
    This defines the processing flow to be used when forming the response. Because itsme® supports the Authorization Code Flow, this value MUST be code.
    scope
    REQUIRED
    It allows your application to express the desired scope of the access request. Each scope returns a set of user attributes. The scopes an application should request depend on which user attributes your application needs. Once the user authorizes the requested scopes, his details are returned in an ID Token and are also available through the UserInfo Endpoint.

    All scope values must be space-separated.

    The basic (and required) scopes are openid and service. Beyond that, your application can ask for additional standard scopes values which map to sets of related claims are: profile email address phone eid
    service
    REQUIRED
    It indicates the itsme® service your application intends to use, e.g. service:TEST_code by replacing "TEST_code" with the service code generated during registration.
    openid
    REQUIRED
    It indicates that your application intends to use the OpenID Connect protocol to verify a user's identity by returning a sub claim which represents a unique identifier for the authenticated user.
    profile
    OPTIONAL
    Returns claims that represent basic profile information, specifically family_name, given_name, name, gender, locale, picture and birthdate.

    If requested, a value SHALL always be returned for the above claims except for the given_name claim which MAY NOT be returned if the user doesn't have any first name(s).
    email
    OPTIONAL
    Returns the email claim, which contains the user's email address, and email_verified, which is a boolean indicating whether the email address was verified by the user.

    If requested, a value SHALL always be returned for the email_verified claim only if email claim is filled with a value, whereas the email claim SHALL always be returned only if the user gave us an email address.
    address
    OPTIONAL
    Returns user's postal address, represented as JSON Object containing some or all of these members formatted street_address postal_code locality

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    phone
    OPTIONAL
    Returns the phone_number claim, which contains the user's phone number, and phone_number_verified, which is a boolean indicating whether the phone number was verified by the user.

    If requested, a value SHALL always be returned for the above claims.
    eid
    OPTIONAL
    Returns the http://itsme.services/v2/claim/BENationalNumbe claim, which contains the unique identification number of natural persons who are registered in Belgium, and http://itsme.services/v2/claim/BEeidSn, which is a string indicating the Belgian ID card number.

    If requested, a value SHALL always be returned for the above claims.
    redirect_uri
    REQUIRED
    It is the URL to which users are redirected once the authentication is complete.

    The following restrictions apply to redirect URIs: The redirect URI MUST match the value preregistered during the registration. The redirect URI MUST begin with the scheme https (refer to this section for more information). There is an exception for localhost redirect URIs that are only permitted for development purposes, it’s not for use in production. The redirect URI SHALL NOT be a custom URL. The fragment identifier introduced by a hash mark # SHALL NOT be used. The redirect URI is case-sensitive. Its case MUST match the case of the URL path of your running application. For example, if your application includes as part of its path .../abc/response-oidc, do not specify .../ABC/response-oidc in the redirect URI. Because the web browser treats paths as case-sensitive, cookies associated with .../abc/response-oidc MAY be excluded if redirected to the case-mismatched .../ABC/response-oidc URL. If relevant (in case you have a mobile app) make sure that your redirect URIs support the Universal links and App links mechanism. Functionally, it will allow you to have only one single link that will either open your desktop web application, your mobile app or your mobile site on the User’s device. Universal links and App links are standard web links (http://mydomain.com) that point to both a web page and a piece of content inside an app. When a Universal Link is opened, the app OS checks to see if any installed app is registered for that domain. If so, the app is launched immediately without ever loading the web page. If not, the web URL is loaded into the webbrowser.
    state
    Strongly RECOMMENDED
    Specifies any string value that your application uses to maintain state between your Authorization Request and the Authorization Server's response. You can use this parameter for several purposes, such as directing the user to the correct resource in your application and mitigating cross-site request forgery.
    nonce
    Strongly RECOMMENDED
    A string value used to associate a session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authorization Request to the ID Token.
    ui_locales
    OPTIONAL
    Indicates the user's preferred languages for the itsme® sign-in page, represented as a space-separated list of language tag values, ordered by preference.

    Possible values : fr nl de en
    display
    OPTIONAL
    Specify how the itsme® sign-in page should be displayed to the user. If set to touch, it SHOULD displays the itsme® sign-in page with a device that leverages a touch interface. If set to page, the itsme® sign-in UI SHOULD be consistent with a full page view of the User-Agent. If the display parameter is not specified, this is the default display mode.
    acr_values
    OPTIONAL
    Indicates the authentication method required to process the request, represented as a space-separated list of tag values, ordered by preference.

    Possible values : http://itsme.services/v2/claim/acr_basic http://itsme.services/v2/claim/acr_advanced

    Note : if these two values are provided only the most constraining authentication method will be applied, e.g. http://itsme.services/v2/claim/acr_advanced.
    http://itsme.services/v2/
    claim/acr_basic
    It lets the user to choose either fingerprint usage (if device is compatible) or itsme® code. If the acr_values parameter is not specified, this is the default authentication method.
    http://itsme.services/v2/
    claim/acr_advanced
    It forces the user to use his itsme® code.
    claims
    OPTIONAL
    Requests specific user's details to be returned from the UserInfo Endpoint or in the ID Token. It is represented as a JSON object that could use as member {"userinfo":{...} - which content indicates which claims to return at the UserInfo Endpoint - or {"id_token":{...} - which indicates those to return at the ID Token -, together with indication whether the claim is voluntary (default) or essential.

    Note: to avoid the need of creating an additionnal request, itsme® recomends to create a JSON object using {"id_token":{...} as member.


    Possible user's details your application can request is listed below.
    name
    OPTIONAL
    Returns user's full name in displayable form including all name parts, possibly including titles and suffixes.

    If requested, a value SHALL always be returned for this claim.
    given_name
    OPTIONAL
    Returns user's given name(s) or first name(s). Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.

    If requested, a value MAY NOT be returned if the user doesn't have any first name(s).
    family_name
    OPTIONAL
    Returns user's surname(s) or last name(s). Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.

    If requested, a value SHALL always be returned for this claim.
    birthdate
    OPTIONAL
    Return user's birthday, represented as a string in YYYY-MM-DD date format.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents. Users with a BE document will always be 16 years old or more, users with a NL document will always be 18 or more.
    http://itsme.services/v2/
    claim/birthdate_as_string
    OPTIONAL
    Returns user's birthday. It is considered as official or at least coming unprocessed from the ID document.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents. Users with a BE document will always be 16 years old or more, users with a NL document will always be 18 or more.
    gender
    OPTIONAL
    Returns user's gender. Possible values are : female male unknown n/a (note: Belgian accounts can only be female or male)

    If requested, a value SHALL always be returned for this claim.
    locale
    OPTIONAL
    Returns user's mobile phone language, represented as a string format. Possible values are : NL FR DE EN

    If requested, a value MAY NOT be returned for this claim.
    picture
    OPTIONAL
    Returns user's ID picture, represented as a URL string. This URL refers to an image file (for example, a JPEG, JPEG2000, or PNG image file).

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents.

    Accessing this URL has to be done with your bearer token. Example:
    GET /v2/picture HTTP/1.1
    Host: idp.prd.itsme.services
    Authorization: Bearer SlAV32hkKG
    email
    OPTIONAL
    Returns user's email address.

    If requested, a value MAY NOT be returned if the user doesn't gave us an email address.
    email_verified
    OPTIONAL
    Returns true if the user's e-mail address is verified; otherwise false.

    Note : currently, itsme® always returns false for this claim because the email verification feature is not yet implemented in our systems.

    If requested, a value SHALL NOT be returned if the email claim is not filled with a value.
    phone_number
    OPTIONAL
    Returns user's phone number, represented as a string format. For example : [+][country code] [subscriber number including area code].

    If requested, a value SHALL always be returned for this claim.
    phone_number_verified
    OPTIONAL
    Returns true if the user's phone number is verified; otherwise false.

    If requested, a value SHALL always be returned for this claim.
    address
    OPTIONAL
    Returns user's postal address, represented as JSON Object containing some or all of these members formatted street_address postal_code locality.

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/claim_citizenship
    OPTIONAL
    Returns user's nationality. The format is directly depending on the underlying ID document: for Belgian ID documents this is represented as a string, and for Dutch ID documents this is represented in the ISO 3166-1 alpha-3 format.

    If requested, a value SHALL always be returned for this claim.
    http://itsme.services/v2/
    claim/claim_citizenship_as_iso
    OPTIONAL
    Returns user's nationality. The format is always the ISO 3166-1 alpha-3 format. Please be aware that this claim is computed by itsme® for users with a Belgian ID document on a best effort basis. For the original value as stored on the ID document, see http://itsme.services/v2/claim/claim_citizenship above.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/place_of_birth
    OPTIONAL
    Returns user's place of birth, represented as a JSON Object containing some or all of these members formatted city country.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/physical_person_photo
    OPTIONAL
    Returns user's ID picture, represented as a JSON Object containing some or all of these members format value.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/BEeidSn
    OPTIONAL
    Returns user's Belgian ID document number, represented as a string with 12 digits in the form xxx-xxxxxxx-yy. (the check-number yy is the remainder of the division of xxxxxxxxxx by 97) for Belgian citizens, or starting with a letter and nine digits in the form B xxxxxxx xx for EU/EEA/Swiss citizens.

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID documents.
    http://itsme.services/v2/
    claim/claim_device
    OPTIONAL
    Returns user's phone information, represented as a JSON Object containing some or all of these members os appName appRelease deviceLabel debugEnabled deviceID osRelease manufacturer deviceLockLevel smsEnabled rooted msisdn deviceModel sdkRelease.

    If requested, a value MAY NOT be returned for this claim.
    http://itsme.services/v2/
    claim/transaction_info
    OPTIONAL
    Returns information about the itsme® transaction, represented as a JSON Object containing some or all of these members securityLevel bindLevel appRelease.

    If requested, a value MAY NOT be returned for this claim.
    http://itsme.services/v2/
    claim/BENationalNumber
    OPTIONAL
    Returns user's Belgian unique identification number, represented as a string with 11 digits in the form YY.MM.DD-xxx.cd where YY.MM.DD is the birthdate of the person, xxx a sequential number (odd for males and even for females) and cd a check-digit. Some exceptions could apply.

    If requested, a value SHALL always be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/validityFrom
    OPTIONAL
    Returns user's Belgian ID document issuance date, represented as a string in YYYY-MM-DDThh:mm:ss date format specified by ISO 8601. Can only be returned in combination with claim http://itsme.services/v2/claim/BEeidSn.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL NOT be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/validityTo
    OPTIONAL
    Returns user's Belgian ID card expiry date, represented as a string in YYYY-MM-DDThh:mm:ss.nnnZ date format specified by ISO 8601. Can only be returned in combination with claim http://itsme.services/v2/claim/BEeidSn.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and MAY NOT be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/verificationDate
    OPTIONAL
    Returns the date when the user's document was read for the last time, represented as a string in YYYY-MM-DDThh:mm:ss date format, specified by ISO 8601.

    If requested, a value MAY NOT be returned for users with a Belgian ID document, and SHALL always be returned for users with a Dutch ID document.
    http://itsme.services/v2/
    claim/IDDocumentSN
    OPTIONAL
    Returns the Dutch ID card/passport number, represented as a string composed of letters at positions 1 and 2 ; letters or digits from positions 3-8: ; and a digit at position 9. The letter ‘O’ is not used in the document numbers. The digit ‘0’ (zero) MAY be used.

    If requested, a value SHALL always be returned for this claim.
    http://itsme.services/v2/
    claim/IDDocumentType
    OPTIONAL
    Returns the Dutch ID card/passport document type.

    If requested, a value SHALL always be returned for this claim.
    request_uri
    OPTIONAL
    A URL using the https scheme referencing a resource containing a JWT whose claims are the request parameters. The request_uri parameter is used to secure parameters in the Authorization Request from tainting or inspection when sending the request to the itsme® Authorization Endpoint.

    If the request_uri parameter is used, the JWT MUST be signed and MUST contain the claims iss (issuer) and aud (audience) as members. The iss value SHOULD be your client_id. The aud value SHOULD be set to https://idp.[e2e/prd].itsme.services/v2/authorization. The JWT MAY also be encrypted. If both signing and encryption are performed, it MUST be signed then encrypted, with the result being a Nested JWT (refer to this page for more information).

    The following restrictions apply to request URIs: The request URI MUST be preregistered during the registration. The request URI MAY contain any TCP port number. Example : https://test.istme.be:443/p/test The request URI MUST begin with the scheme https (refer to this section for more information). The usage of localhost request URIs that are not permitted. The request URI JWT MUST be publicly accessible.
    request
    OPTIONAL
    It represents the request as a JWT whose Claims are the request parameters. The request parameter is used to secure parameters in the Authorization Request from tainting or inspection when sending the request to the itsme® Authorization Endpoint.

    If the request parameter is used, the JWT MUST be signed and MUST contain the claims iss (issuer) and aud (audience) as members. The iss value SHOULD be your client_id. The aud value SHOULD be set to https://idp.[e2e/prd].itsme.services/v2/authorization. The JWT MAY also be encrypted. If both signing and encryption are performed, it MUST be signed then encrypted, with the result being a Nested JWT (refer to this page for more information).
    code_challenge
    OPTIONAL
    A challenge derived from the code verifier by applying a S256 hash. This parameter is REQUIRED if you requested PKCE to be enforced.
    code_challenge_method
    OPTIONAL
    Code verifier transformation method.

    It MUST be set to S256.

    Response

    302 application/x-www-form-urlencoded

    code
    An intermediate opaque credential of 36 characters used to retrieve the ID Token and Access Token.

    Note : the code has a lifetime of 3 minutes.
    state
    The string value provided in the Authorization Request. You SHOULD validate that the value returned matches the one supplied.

Example

  • Request

    GET /authorize HTTP/1.1
    Host: server.example.com
    
    response_type=code
      &client_id=s6BhdRkqt3
      &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
      &scope=openid%20service:TEST_code%20profile%20email
      &nonce=n-0S6_WzA2Mj
      &state=af0ifjsldkj
      &acr_values=http://itsme.services/V2/claim/acr_basic
    

    Response

    HTTP/1.1 302 Found
    Location: https://client.example.org/cb?
      code=SplxlOBeZQQYbYS6WxSbIA
      &state=af0ifjsldkj
    
  • Request

    GET /authorize HTTP/1.1
    Host: server.example.com
    
    response_type=code
      &client_id=s6BhdRkqt3
      &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
      &scope=openid%20service:TEST_code%20profile%20email
      &nonce=n-0S6_WzA2Mj
      &state=af0ifjsldkj
      &acr_values=http://itsme.services/V2/claim/acr_basic
    

    Response

    HTTP/1.1 302 Found
    Location: https://client.example.org/cb?
      code=SplxlOBeZQQYbYS6WxSbIA
      &state=af0ifjsldkj
    

Token Request

  • POST https://idp.[e2e/prd].itsme.services/v2/token

    To assert the identity of the user, the code received previously needs to be exchanged for an ID token and access token. During this step, your application has to authenticate itself to our server using the public- and private-key pair method.

    Parameters

    grant_type
    REQUIRED
    Set this to authorization_code to tell the Token Endpoint that your application wants to exchange an authorization code for an ID token and access token.
    code
    REQUIRED
    The intermediate opaque credential received in the Authorization Response.
    redirect_uri
    REQUIRED
    It is the URL to which users are redirected once the authentication is complete. It MUST match the value used in the Authorization Request.
    code_verifier
    OPTIONAL
    High-entropy cryptographic random string using the unreserved characters [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~", with a minimum length of 43 characters and a maximum length of 128 characters. This parameter is REQUIRED if you required PKCE to be enforced.
    client_assertion_type
    REQUIRED
    Specifies the type of assertion. Set this to urn:ietf:params:oauth:client-assertion-type:jwt-bearer.
    client_assertion
    REQUIRED
    Is a set of identity and security information, in the form of a JWT, used as an authentication method. To ensures that the request to get the id token and access token is made only from your application, and not from a potential attacker that may have intercepted the authorization code, the JWT MUST be signed, and MAY also be encrypted. If both signing and encryption are performed, it MUST be signed then encrypted, with the result being a Nested JWT (refer to this page for more information).

    The JWT contains the following claims.
    iss
    REQUIRED
    The issuer of the token. This value MUST be the same as the client_id.
    sub
    REQUIRED
    The subject of the token. This value MUST be the same as the client_id.
    aud
    REQUIRED
    The full URL of the resource you're using the JWT to authenticate to. Set this to https://idp.[e2e/prd].itsme.services/v2/token.
    jti
    REQUIRED
    An unique identifier for the token, containing maximum 255 characters.
    exp
    REQUIRED
    The expiration time of the token in seconds since January 1, 1970 UTC.
    iat
    OPTIONAL
    The time at which the JWT was issued.

    Response

    200 application/json

    access_token
    Allows an application to retrieve consented user information from the UserInfo Endpoint.
    token_type
    Provides your application with the information required to successfully utilize the access token. Returned value is Bearer..
    id_token
    A security token that contains information about the authentication of an user, and potentially other requested claim data's. The id_token value is represented as a signed and encrypted JWT. So, before being able to use the ID Token claims you will have to decrypt and verify the signature (refer to this page for more information).
  • POST https://oidc.[e2e/prd].itsme.services/clientsecret-oidc/csapi/v0.1/connect/token

    To assert the identity of the user, the code received previously needs to be exchanged for an ID token and access token. During this step, your application has to authenticate itself to our server using the secret key method.

    Parameters

    grant_type
    REQUIRED
    Set this to authorization_code to tell the Token Endpoint that your application wants to exchange an authorization code for an ID koken and access token.
    client_id
    REQUIRED
    It identifies your application. This parameter value is generated during registration.
    code
    REQUIRED
    The intermediate opaque credential received in the Authorization Response.
    redirect_uri
    REQUIRED
    It is the URL to which users are redirected once the authentication is complete. It MUST match the value used in the Authorization Request.
    client_secret
    REQUIRED
    Contains the a key you reveiced when registering your application. This ensures that the request to get the id token and access token is made only from your application, and not from a potential attacker that may have intercepted the authorization code.
    code_verifier
    OPTIONAL
    High-entropy cryptographic random string using the unreserved characters [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~", with a minimum length of 43 characters and a maximum length of 128 characters. This parameter is REQUIRED if you required PKCE to be enforced.

    Response

    200 application/json

    access_token
    Allows an application to retrieve consented user information from the UserInfo Endpoint.
    token_type
    Provides your application with the information required to successfully utilize the access token. Returned value is Bearer.
    id_token
    A security token that contains information about the authentication of an user, and potentially other requested claim data's. The id_token value is represented as a signed and encrypted JWT. So, before being able to use the ID Token claims you will have to decrypt and verify the signature (refer to this page for more information).

Example

  • Request

    POST /token HTTP/1.1
    Host: openid.c2id.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code
     &code=SplxlOBeZQQYbYS6WxSbIA
     &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
     &client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
     &client_assertion=PHNhbWxwOl ... ZT
    

    Response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: no-store
    Pragma: no-cache
    
    {
      "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc
        yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5
        NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ
        fV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5Nz
        AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q
        Jp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ
        NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd
        QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoS
        K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4
        XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"
      "access_token": "SlAV32hkKG",
      "token_type": "Bearer",
      "expires_in": 3600,
    }
    
  • Request

    POST /token HTTP/1.1
    Host: openid.c2id.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code
     &code=SplxlOBeZQQYbYS6WxSbIA
     &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
     &client_id=s6BhdRkqt3
     &client_secret=PHNhbWxwOl ... ZT
    

    Response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: no-store
    Pragma: no-cache
    
    {
      "id_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..UPzPZWb
         Da_ZvysMK.7ZXAFd24uTT35_gzrdYeuLBPrPR3Gc8VdB7L7MgZWgS4hiP
         72URWNDPbOMLYw4xHx2CVKPGp9K0L05UeSMDcB39n_anV5nZ3BbkNsufx
         RiANOfoxx2W5jsb8Fj5W8F862wRWmClxTOosszauVhD6ZbhpJM0k9Iw7T
         CmwlmK3WMg9aE-gSNlvsjgrfB5QFmgYH2PWF1YdWZ1gCdCw3rz1XvxHPV
         yR9PfSy7SFFEoZos-2Y_rlO4R5_Oel3xy0YA_OucJVnV2x6oblxQ4TBXB
         8YMCYyk3m7aS_S_oEs-2yAGCbQgwKU9jwqytF8Yw5X_rZmcbTpdvAF5qu
         ozfnoiW2ijHxr6xlH_8cibSIjhKOHEPCBTc8AeAb9nHLGrx0H1q02o7nz
         U-TwxUayrHXLBKd72l6aD8RxwCziATzjVWnvVVR7BmvOAV8L8IY_DTGgn
         iH2NlHL6_2KVtuB8czkDjEToE-JUfuzoedja9PTzRp6paO3ZpXSQcLl6a
         6qBe526hMNEiK9VPRWPOJ8xIqwpg3mSeMjdkvSS6A9xJVH_xEy9jzts1n
         k2ge-YGrZZiQt8Do7NCd-ic7_HU8timZ_mfPFc8NDYgr0WtPefDQlC6en
         8sUcMjuhuZOx_A3cQ7Mvoq662meUbkN64z50oBoh8Drora69I85zXQwes
         sR9f4z0th2-XDDrPxPop6yuJx8vMmRQNhN55qvwxgFMTEJyvDNAVfBA9s
         FZlj4hubY3wtYP5nLADjIFLresbrsu6iFQaE7v01FUMMDXcvBi_hw-M9s
         0nBuWsQa2rZRcrVJOK9HVXUxXdUfTNL4MrrG5UzT7gdtcpesXeFVLSJtq
         7HEGlHi3xaefgo4P5GN562CGVUl41BSmoBJT9oS5YJWKJOEOfpcAhYLKM
         5iyMbgOxVz1Fz7z6Pfcd-PRcRlSQlHBXCdhP01AmRw-H_bdoKFIM1D33B
         3AmmEKD6XRe8XM79F_gwySJ3AIWUzVLpJxe1lUphzIgy5O-VleJWyKl3D
         nAkCQwvqV-P-MrjirZckzlDjjfyOlEA_KNAK-PwCvZ5Yh_Wv8f-8LXUWJ
         ewfOCZmOM5pSKYXl-oZ.hfcIWiYPCtQMheNN8FB0Ww"
      "access_token": "SlAV32hkKG",
      "token_type": "Bearer",
      "expires_in": 3600,
    }
    

UserInfo Request

  • GET https://idp.[e2e/prd].itsme.services/v2/userinfo

    The UserInfo Endpoint returns previously consented user profile information to your application. In other words, if the required claims are not returned in the ID Token, you can obtain the additional claims by presenting the access token to the itsme® UserInfo Endpoint. This is achieved by sending a HTTP GET request to the Userinfo Endpoint, passing the access token value in the Authorization header using the Bearer authentication scheme.

    This is illustrated in the example below.

    Response

    200 application/json

    The UserInfo Response is represented as a signed and encrypted JWT. So, before being able to extract the claims you will have to decrypt and verify the signature (refer to this page for more information).

  • GET https://oidc.[e2e/prd].itsme.services/clientsecret-oidc/csapi/v0.1/connect/userinfo

    The UserInfo Endpoint returns previously consented user profile information to your application. In other words, if the required claims are not returned in the ID Token, you can obtain the additional claims by presenting the access token to the itsme® UserInfo Endpoint. This is achieved by sending a HTTP GET request to the Userinfo Endpoint, passing the access token value in the Authorization header using the Bearer authentication scheme.

    This is illustrated in the example below.

    Response

    200 application/json

    The UserInfo Response is represented as a signed and encrypted JWT. So, before being able to extract the claims you will have to decrypt and verify the signature (refer to this page for more information).

Example

  • Request

    GET /userinfo HTTP/1.1
    Host: server.example.com
    Authorization: Bearer SlAV32hkKG
    

    Response

    HTTP/1.1 200 OK
    Content-Type: application/json
    
      {
       "sub": "248289761001",
       "name": "Jane Doe",
       "given_name": "Jane",
       "family_name": "Doe",
       "preferred_username": "j.doe",
       "email": "janedoe@example.com",
       "picture": "http://example.com/janedoe/me.jpg"
      }
    
  • Request

    GET /userinfo HTTP/1.1
    Host: server.example.com
    Authorization: Bearer SlAV32hkKG
    

    Response

    HTTP/1.1 200 OK
    Content-Type: application/json
    
      {
       "sub": "248289761001",
       "name": "Jane Doe",
       "given_name": "Jane",
       "family_name": "Doe",
       "preferred_username": "j.doe",
       "email": "janedoe@example.com",
       "picture": "http://example.com/janedoe/me.jpg"
      }
    

Revoke Request

  • Not applicable.

  • POST https://oidc.[e2e/prd].itsme.services/clientsecret-oidc/csapi/v0.1/connect/revoke

    The Revocation Endpoint enables your application to notify itsme® that a previously obtained access token is no longer needed and MUST be revoked.

    Parameters

    token
    REQUIRED
    The access_token previously obtained that you want to revoke.
    token_type_hint
    OPTIONAL
    A hint about the type of the token submitted for revocation. You MAY pass this parameter in order to help itsme® to optimize the token lookup. If the server is unable to locate the token using the given hint, it MUST extend its search across all of its supported token types. If used, this is set to access_token because itsme® API don't support refresh tokens.

    Response

    200

    itsme® responds with HTTP status code 200 if the token has been revoked successfully or if the client submitted an invalid token.

Example

  • Not applicable.

  • Request

    POST /connect/revoke HTTP/1.1
    Host: server.example.com
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
    
    token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token
    

    Response

    HTTP/1.1 200 OK