Technical University of Munich · Authentication Profile

Tum Authentication

Authentication

Technical University of Munich declares 0 security scheme(s) across its OpenAPI definitions.

UniversityHigher EducationEducationGermanyTechnical UniversityUniversities of ExcellenceCampusCourse CatalogIdentity FederationResearch RepositoryOpen-SourceStudent Information System
Methods: Schemes: 0 OAuth flows: API key in:

Security Schemes

Source

Authentication Profile

Raw ↑
generated: '2026-08-19'
method: probed
source: >-
  Live probes on 2026-08-19 of every surface attributed to Technical University of Munich, plus
  the security schemes declared in the contracts saved under openapi/. Each entry carries the
  operator of the thing it describes — an institution's authentication story is mostly its
  vendors' authentication stories, and this artifact refuses to blur the two.
surfaces:

- surface: TUM Campus App Backend API
  x-operator: institution
  base_url: https://api.tum.app/v1
  scheme: none
  detail: >-
    The generated contract declares no securityDefinitions and no global security requirement, and
    the read operations answer unauthenticated (GET /v1/news/sources 200, GET /v1/student_clubs 200,
    GET /v1/dish/rating/allDishTags 200). Write operations (POST /v1/device, POST /v1/feedback,
    POST /v1/*/rating/new) are governed by a device registration and an in-band token carried in the
    request body rather than by a declared security scheme, so no scheme is discoverable from the
    contract. This is a real contract gap, not a finding of "open write access".
  evidence:
  - url: https://api.tum.app/v1/news/sources
    status: 200
  - url: https://api.tum.app/swagger/swagger.json
    status: 200

- surface: NavigaTUM
  x-operator: institution
  base_url: https://nav.tum.de/api
  scheme: none
  detail: >-
    Fully unauthenticated read API. Search, location lookup, maps and calendar answer without
    credentials. The feedback endpoints use a short-lived token issued by GET /api/feedback/get_token
    as an anti-abuse measure; it is not an identity credential and grants no user context.
  evidence:
  - url: https://nav.tum.de/api/search?q=mi
    status: 200
  - url: https://nav.tum.de/api/status
    status: 200

- surface: eat-api
  x-operator: tenant
  base_url: https://tum-dev.github.io/eat-api
  scheme: none
  detail: >-
    Static JSON files on GitHub Pages. No authentication exists or could exist.
  evidence:
  - url: https://tum-dev.github.io/eat-api/enums/canteens.json
    status: 200

- surface: TUMonline (CAMPUSonline)
  x-operator: tenant
  base_url: https://campus.tum.de/tumonline
  scheme: oauth2
  openid_configuration: >-
    https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/.well-known/openid-configuration
  detail: >-
    TUM's student information system runs CAMPUSonline, and its Keycloak realm publishes a complete
    OpenID Connect discovery document on TUM's own campus.tum.de host. The realm is named
    CAMPUSonline, not TUM — the contract shape is the vendor's; the deployment, the users and the
    data are TUM's. This is the operator distinction this pipeline exists to keep straight, so it is
    recorded as a tenant relationship and NOT saved as a TUM contract.
  endpoints:
    issuer: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline
    authorization: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/protocol/openid-connect/auth
    token: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/protocol/openid-connect/token
    userinfo: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/protocol/openid-connect/userinfo
    jwks: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/protocol/openid-connect/certs
    introspection: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/protocol/openid-connect/token/introspect
    end_session: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/protocol/openid-connect/logout
    dynamic_registration: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/clients-registrations/openid-connect
  grant_types:
  - authorization_code
  - client_credentials
  - implicit
  - password
  - refresh_token
  - urn:ietf:params:oauth:grant-type:device_code
  - urn:ietf:params:oauth:grant-type:token-exchange
  - urn:ietf:params:oauth:grant-type:uma-ticket
  - urn:openid:params:grant-type:ciba
  pkce_methods:
  - plain
  - S256
  notes:
  - >-
    The realm still advertises the implicit and resource-owner-password grants alongside
    authorization_code + PKCE. Both are discouraged by OAuth 2.1 / BCP 225.
  evidence:
  - url: https://campus.tum.de/tumonline/co/public/sec/auth/realms/CAMPUSonline/.well-known/openid-configuration
    status: 200

- surface: TUM Shibboleth Identity Provider
  x-operator: institution
  base_url: https://login.tum.de/idp
  scheme: saml2
  detail: >-
    SAML 2.0 / Shibboleth IdP, DFN-AAI registered, eduGAIN reachable, asserting scope tum.de and
    carrying REFEDS Research & Scholarship plus SIRTFI and SIRTFI2 assurance certifications. This is
    the one authentication surface a university operates by definition, and it is machine-readable.
  evidence:
  - url: https://login.tum.de/idp/shibboleth
    status: 200