Tuva Health · Authentication Profile

Tuva Health Authentication

Authentication

Tuva Health secures its APIs with openIdConnect across 1 declared security scheme, as derived from its OpenAPI definitions.

HealthcareUnited StatesHealth DataFHIRInteroperabilityData AnalyticsData TransformationClaimsOpen-SourcedbtEMPIPatient Matching
Methods: openIdConnect Schemes: 1 OAuth flows: API key in:

Security Schemes

oidc-jwt-forwarded-header openIdConnect

Source

Authentication Profile

Raw ↑
generated: '2026-08-15'
method: searched
source: openapi/tuva-health-empi-openapi.yml
docs: https://tuva-health.github.io/tuva_empi/docs/configuration
note: >-
  Derived mechanically first (0-working/derive-authentication.py returned zero
  profiles: the published Tuva EMPI OpenAPI declares NO components.securitySchemes
  and no top-level security requirement, so the spec is silent on auth). Upgraded
  to `searched` from the provider's own configuration documentation, which does
  document the real model: Tuva EMPI is deployed behind an OAuth2/OIDC reverse
  proxy (oauth2-proxy in the reference Docker Compose stack) and the Django
  backend validates a JWT presented on a configurable header. Because Tuva EMPI
  is customer-deployed software, the identity provider, issuer, JWKS URL, client
  ID and audience are all CUSTOMER-supplied configuration - Tuva operates no
  authorization server of its own.
summary:
  types: [openIdConnect]
  api_key_in: []
  oauth2_flows: []
  token_transport: http-header
  spec_declares_security: false
schemes:
  - name: oidc-jwt-forwarded-header
    type: openIdConnect
    documented_in: docs
    sources: [https://tuva-health.github.io/tuva_empi/docs/configuration]
    header: X-Forwarded-Access-Token
    header_configurable: true
    description: >-
      A JWT issued by the customer's identity provider, forwarded to the API by
      the authenticating proxy on the header named by idp.<backend>.jwt_header
      (default X-Forwarded-Access-Token). The backend verifies the token against
      the configured JWKS URL, client ID and audience claim.
    identity_providers:
      - id: keycloak
        config_key: idp.keycloak
        settings: [server_url, realm, jwt_header, jwt_aud, jwks_url, client_id, client_secret]
      - id: aws-cognito
        config_key: idp.aws_cognito
        settings: [cognito_user_pool_id, jwt_header, jwks_url, client_id]
authorization:
  model: role-based
  note: >-
    Roles are held in Tuva EMPI itself (components.schemas.RoleEnum in the
    OpenAPI) and updated through POST /api/v1/users/{id}
    (operationId users_create). The first admin is granted at bootstrap time
    from initial_setup.admin_email, which must already exist in the external
    identity provider.
  roles_source: openapi/tuva-health-empi-openapi.yml#/components/schemas/RoleEnum
scopes: []
gaps:
  - >-
    The published OpenAPI declares no securitySchemes and applies no security to
    any of its 12 operations, so a generated client or agent reading the contract
    alone would believe the API is unauthenticated. Declaring an
    openIdConnect / http-bearer scheme in the spec would close this.

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.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/tuva-health-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.