University of Helsinki · Authentication Profile
University Of Helsinki Authentication
Authentication
University of Helsinki secures its APIs with apiKey, http-bearer, and oauth2 across 5 declared security schemes, as derived from its OpenAPI definitions.
EducationHigher EducationUniversityFinlandNordicResearchOpen DataResearch DataInstitutional RepositoryOAI-PMHIdentity FederationAPI GatewayCourse CatalogLibraryBiodiversity
Methods: apiKey, http-bearer, oauth2
Schemes: 5
OAuth flows:
API key in: header
Security Schemes
X-Api-Key apiKey
· in: header (X-Api-Key)
oauth2 oauth2
· flows:
X-CSRF-Token apiKey
· in: header (X-CSRF-Token)
Access token http
scheme: bearer
Person-Token apiKey
· in: header (Person-Token)
Source
Authentication Profile
generated: '2026-08-30'
method: probed
source: https://api.helsinki.fi/portal/environments/DEFAULT/configuration
docs: https://api.helsinki.fi/portal/
x-operator: institution
summary:
types:
- apiKey
- http-bearer
- oauth2
api_key_in:
- header
oauth2_flows: []
note: >-
The University of Helsinki fronts its own APIs with a self-hosted Gravitee API Management
gateway. The gateway is https://gw.api.helsinki.fi and the developer portal is
https://api.helsinki.fi/portal/. The portal's own configuration endpoint states the
credential header (`X-Api-Key`) and which plan security types the environment enables:
apikey, oauth2 and jwt are enabled, sharedApiKey and keyless are DISABLED. Keyless being
off is the single most important access fact here — no University of Helsinki gateway API
is callable anonymously, whatever the OpenAPI shows.
gateway:
product: Gravitee API Management
entrypoint: https://gw.api.helsinki.fi
portal: https://api.helsinki.fi/portal/
api_key_header: X-Api-Key
plan_security:
apikey: true
oauth2: true
jwt: true
sharedApiKey: false
keyless: false
evidence: >-
GET https://api.helsinki.fi/portal/environments/DEFAULT/configuration -> 200 application/json,
`portal.entrypoint`, `portal.apikeyHeader`, `plan.security.*` read verbatim.
onboarding:
self_service_for_public: false
local_login_enabled: false
user_creation_enabled: false
application_creation_enabled: true
steps:
- Sign in to api.helsinki.fi with the HY Login Service (institutional SSO).
- Create an application from the Applications menu.
- Subscribe the application to an API in the API Gallery and choose a plan.
- A key is issued against that subscription.
note: >-
`authentication.localLogin.enabled` is false and `portal.userCreation.enabled` is false, so
there is no way for someone without a University of Helsinki (or Haka-federated) identity to
register. The catalogue, the documentation and every OpenAPI are readable without signing in;
obtaining a credential is not. This is affiliation-gated, not paywalled.
evidence:
- url: https://api.helsinki.fi/portal/environments/DEFAULT/pages/0ff46388-9523-430b-b463-889523630b2f/content
status: 200
note: '"How to get started" portal page, four-step subscription flow, links the HY Developers wiki.'
- url: https://wiki.helsinki.fi/X/me05mC
status: 401
note: >-
HY Developers wiki, referenced by the portal as the fuller (mostly Finnish) documentation.
Auth-gated, so it is NOT emitted as a pointer in apis.yml — a 401 pointer reads as a claim
and grades as dead.
schemes:
- name: X-Api-Key
type: apiKey
in: header
parameter: X-Api-Key
used_by:
- openapi/university-of-helsinki-employeeinformationapi-openapi.yml
- openapi/university-of-helsinki-general-efecte-api-openapi.yml
- openapi/university-of-helsinki-hy-building-api-openapi.yml
- openapi/university-of-helsinki-hy-organisation-api-openapi.yml
- openapi/university-of-helsinki-persongroup-openapi.yml
- openapi/university-of-helsinki-serviceapi-openapi.yml
- openapi/university-of-helsinki-helsinki-fi-content-openapi.yml
- openapi/university-of-helsinki-network-registry-api-openapi.yml
note: >-
The dominant scheme. Two specs case the header differently in the document (`X-API-Key` in
the network registry spec, `X-Api-Key` everywhere else); HTTP header names are
case-insensitive so both work, but the inconsistency is the provider's.
- name: oauth2
type: oauth2
flows: []
used_by:
- openapi/university-of-helsinki-course-pages-cms-openapi.yml
note: >-
Declared with NO flows, no authorizationUrl, no tokenUrl and no scopes, and its description
links to `https://developers.getbase.com/docs/rest/articles/oauth2/requests` — an unrelated
third-party CRM vendor. This is Drupal Simple OAuth boilerplate that shipped into the
published spec unedited. Recorded because it is what the provider publishes, not because it
is usable.
- name: X-CSRF-Token
type: apiKey
in: header
parameter: X-CSRF-Token
token_url: https://cms.studies.helsinki.fi/user/token
used_by:
- openapi/university-of-helsinki-course-pages-cms-openapi.yml
note: Drupal JSON:API CSRF token, required on writes to the course-pages CMS.
- name: Access token
type: http
scheme: bearer
bearer_format: JWT
used_by:
- openapi/university-of-helsinki-finbif-laji-openapi.yml
note: >-
FinBIF (api.laji.fi) is the exception to the gateway story — it is operated by the Finnish
Museum of Natural History, a University of Helsinki institute, on its own host with its own
auth. Self-service: POST an email address to /api-user and the access token is mailed back.
This is the only genuinely public, no-affiliation-required credential in the estate.
- name: Person-Token
type: apiKey
in: header
parameter: Person-Token
used_by:
- openapi/university-of-helsinki-finbif-laji-openapi.yml
note: Second FinBIF credential, identifying an end user rather than the calling application.
non_gateway_surfaces:
- surface: Helda DSpace REST API
auth: none for read; DSpace `/server/api/authn` for write
evidence: 'GET https://helda.helsinki.fi/server/api -> 200 application/hal+json, authn link present.'
- surface: HY Data Catalogue DSpace REST API
auth: none for read; DSpace `/server/api/authn` for write
evidence: 'GET https://datakatalogi.helsinki.fi/server/api -> 200 application/hal+json, DSpace 9.0.'
- surface: OAI-PMH (Helda, HY Data Catalogue, Editori journals)
auth: none — anonymous harvesting by protocol design
- surface: Sisu / Kori
auth: none observed on read paths, but the surface is a Funidata product, not a UH contract
evidence: >-
GET https://sisu.helsinki.fi/kori/api/module-search -> 400 application/json
{"message":"AT_LEAST_ONE_SEARCH_PARAM_REQUIRED"} — answered without a credential.
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/university-of-helsinki-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.