EU Open Data Portal · Authentication Profile
Eu Open Data Portal Authentication
Authentication
EU Open Data Portal secures its APIs with apiKey and http across 2 declared security schemes, as derived from its OpenAPI definitions.
GovernmentOpen DataSPARQLEURegulatoryLinked DataDCAT-APData QualityMetadataCatalogs
Methods: apiKey, http
Schemes: 2
OAuth flows:
API key in: header
Security Schemes
ApiKeyAuth apiKey
· in: header (X-API-Key)
BearerAuth http
scheme: bearer
Source
Authentication Profile
generated: '2026-09-07'
method: searched
source: openapi/ securitySchemes across hub-repo, hub-search and the MQA metrics cache, upgraded from https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-access-control/
and https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-store/
summary:
types:
- apiKey
- http
api_key_in:
- header
public_read: true
note: 'Reads are anonymous across every API — search, MQA metrics, MQA reporter, SHACL validation, statistics and SPARQL
all answer without a credential (verified live). Credentials are only needed to WRITE into a catalogue, and they
are not self-service: access is granted by the portal team to a catalogue you are responsible for.'
schemes:
- name: ApiKeyAuth
type: apiKey
in: header
parameter: X-API-Key
sources:
- openapi/eu-open-data-portal-hub-repo-openapi.yaml
- openapi/eu-open-data-portal-hub-search-openapi.yaml
- openapi/eu-open-data-portal-mqa-metrics-cache-openapi.yaml
- name: BearerAuth
type: http
scheme: bearer
bearerFormat: JWT
sources:
- openapi/eu-open-data-portal-hub-repo-openapi.yaml
- openapi/eu-open-data-portal-hub-search-openapi.yaml
- openapi/eu-open-data-portal-mqa-metrics-cache-openapi.yaml
docs: https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-access-control/
flows:
- name: Service account (client credentials via the access-control middleware)
steps:
- POST https://data.europa.eu/auth/middleware/login/service with JSON {client_id, client_secret}
- 'Response: {"access_token": "..."}'
- 'Send the token as Authorization: Bearer <token> to hub-repo and hub-store'
audience: hub-repo, hub-store
source: https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-access-control/
- name: EU Login user + UMA 2.0 party token (Keycloak realm DEU)
steps:
- POST https://data.europa.eu/auth/realms/DEU/protocol/openid-connect/token with grant_type=password, client_id=piveau-hub-ui,
username, password — returns a user token (expires_in 300, refresh_expires_in 1800, scope 'email profile')
- 'POST the same token endpoint with grant_type=urn:ietf:params:oauth:grant-type:uma-ticket and audience=piveau-hub-repo,
carrying the user token as Authorization: Bearer — returns the party token'
- Use the party token to manage datasets in data.europa.eu
audience: piveau-hub-repo
token_ttl_seconds: 300
refresh_ttl_seconds: 1800
source: https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-access-control/
- name: Catalogue-scoped API key
steps:
- Send the key in the X-API-Key header
note: Declared as ApiKeyAuth in all three write-bearing contracts; issuance is handled by the portal team, not documented
as self-service.
source: openapi/eu-open-data-portal-hub-repo-openapi.yaml
identity_provider:
type: keycloak
realm: DEU
token_endpoint: https://data.europa.eu/auth/realms/DEU/protocol/openid-connect/token
middleware_endpoint: https://data.europa.eu/auth/middleware/login/service
discovery_document: https://data.europa.eu/auth/realms/DEU/.well-known/openid-configuration
discovery_status: 403
discovery_note: The realm is real and documented, but its OIDC discovery document is blocked at the edge (HTTP 403
probed 2026-09-07), so a client cannot auto-configure.
access_control:
model: catalogue-scoped, plus ODRL policy-based access control on datasets
note: hub-search 5.3.7 added policy-based access control evaluating ODRL constraints on datasets against JWT claims,
and 5.3.9 made multiple ODRL policies combine as AND restrictions (service changelog).
source: https://gitlab.com/dataeuropa/hub/search/-/blob/master/CHANGELOG.md
gaps:
- No scopes are documented anywhere — the observed OIDC scope string is the default "email profile", and no scopes/ artifact
is emitted because there is no scope surface to record.
- Unauthorized and Forbidden are declared as null entries in hub-search components.responses while 401/403 are referenced
by operations.
Work with this as data
Every security artifact here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/eu-open-data-portal-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.