Federal Aviation Administration · Authentication Profile

Faa Authentication

Authentication

Federal Aviation Administration secures its APIs with none and apiKey across 5 declared security schemes, as derived from its OpenAPI definitions.

TravelUnited StatesAviationAirportsGovernmentRegulatorOpen DataAirspaceDronesAeronautical Information
Methods: none, apiKey Schemes: 5 OAuth flows: API key in: header

Security Schemes

none none
apiKey apiKey
· in: header (X-API-KEY)
appId apiKey
· in: header (X-APP-ID)
client_id + client_secret apiKey
· in: header (client_id, client_secret)
X-Gravitee-Api-Key apiKey
· in: header (X-Gravitee-Api-Key)

Source

Authentication Profile

Raw ↑
generated: '2026-07-28'
method: searched
source: >-
  openapi/*.yml in this repo, plus the FAA Gravitee developer-portal REST API
  (https://apim-api.apic4e.faa.gov/portal/environments/DEFAULT/configuration and
  /apis/{id}/plans), https://www.faa.gov/data, https://nms.aim.faa.gov/ and
  https://www.faa.gov/air_traffic/technology/swim/products/get_connected — all
  fetched 2026-07-28
docs: https://www.faa.gov/data
upgrades: >-
  Upgrades the 2026-07-28 derived pass, which saw only the two apiKey schemes in the
  SAS spec. The FAA's real credential model is wider than its securitySchemes: two
  APIs need no credential at all, one declares its credential as ordinary header
  PARAMETERS rather than a scheme, and the gateway itself has a key header that
  appears in no spec.
summary:
  types: [none, apiKey]
  api_key_in: [header]
  oauth2_flows: []
  oauth2: false
  oidc: false
  mtls: false
  key_issuance: self-serve account and application creation, then MANUAL approval per API
  headline: >-
    No OAuth 2.0 and no OpenID Connect anywhere in the FAA public API estate. Every
    credentialed FAA API is a static shared secret carried in a request header, with
    no token exchange, no expiry, no rotation policy and no scopes. Two APIs — the
    two most useful ones — need no credential at all.
schemes:
- name: none
  type: none
  applies_to:
  - FAA Airport Status Web Service (ASWS)
  - FAA Aeronautic Product Release API (APRA)
  - FAA NAS Status airport status information feed
  - FAA Temporary Flight Restriction (TFR) list API
  - FAA NMS North Atlantic Track NOTAM feed
  - FAA NMS system metrics feed
  - FAA Data Catalog (CKAN)
  - FAA AIS and UDDS ArcGIS Open Data hubs
  - Releasable aircraft registry bulk ZIP
  evidence: >-
    Neither the ASWS nor the APRA OpenAPI declares components.securitySchemes, both
    declare a Creative Commons Zero (CC0) licence, and the FAA's own Gravitee plan
    for each is KEY_LESS. Unauthenticated HTTP 200 verified on both, and on the TFR,
    NAS status and NMS feeds, on 2026-07-28.
- name: apiKey
  type: apiKey
  in: header
  parameter: X-API-KEY
  sources: [openapi/faa-safety-assurance-system-api-openapi.yml]
  applies_to: [FAA Safety Assurance System (SAS) API]
  applied: false
  applied_note: >-
    DEFINED in components.securitySchemes but never APPLIED — the SAS spec declares no
    root-level and no operation-level `security`, so tooling reads the operation as
    unauthenticated. Flagged in overlays/faa-safety-assurance-system-api-overlay.yaml.
- name: appId
  type: apiKey
  in: header
  parameter: X-APP-ID
  sources: [openapi/faa-safety-assurance-system-api-openapi.yml]
  applies_to: [FAA Safety Assurance System (SAS) API]
  applied: false
  note: Paired with X-API-KEY. Same never-applied problem.
- name: client_id + client_secret
  type: apiKey
  in: header
  parameter: client_id, client_secret
  declared_as: required header parameters on every operation, NOT a securityScheme
  sources: [openapi/faa-air-carrier-prd-api-openapi.yml]
  applies_to:
  - FAA Air Carrier PRD API
  - FAA NOTAM API
  evidence: >-
    All eight PRD operations declare both as `required: true` header parameters. An
    unauthenticated GET to https://external-api.faa.gov/notamapi/v1/notams returned
    HTTP 401 {"message":"Unauthorized","http_status_code":401} on 2026-07-28.
  weakness: >-
    A client SECRET carried as a plain request header with no token exchange, no
    expiry and no rotation policy — and modelled as a parameter, so generated clients
    and API tooling do not recognise the API as authenticated at all. This guards the
    most sensitive data in the FAA estate (pilot employment, training, drug/alcohol
    and disciplinary records).
- name: X-Gravitee-Api-Key
  type: apiKey
  in: header
  parameter: X-Gravitee-Api-Key
  sources: [portal configuration endpoint]
  evidence: >-
    https://apim-api.apic4e.faa.gov/portal/environments/DEFAULT/configuration reports
    the gateway apikeyHeader as X-Gravitee-Api-Key.
  note: >-
    The API-management gateway's own key header. Appears in no FAA OpenAPI, so a
    developer working from the specs alone would not know it exists.
onboarding:
  portal: https://api.faa.gov/
  portal_actual: https://portal.apic4e.faa.gov/ (301 from api.faa.gov)
  software: Gravitee.io APIM Developer Portal
  self_serve: true
  evidence: >-
    Portal configuration reports userCreation.enabled=true and
    applicationCreation.enabled=true. The FAA Data Portal says verbatim: "Developers
    can easily integrate FAA dataset into software applications thanks to the FAA's
    Application Programming Interfaces (APIs). Get started by creating an API key".
  approval: >-
    Every API_KEY plan in the portal is validation MANUAL — an account is self-serve
    but a subscription is approved by the FAA API owner. The Air Carrier PRD plan
    additionally sets comment_required, so a justification must be supplied.
  out_of_band:
  - api: FAA NOTAM Management Service (NMS)
    method: email request to notams@faa.gov
    source: https://nms.aim.faa.gov/
    verbatim: 'Please contact us at notams@faa.gov to request access to the new NMS-API.'
  - api: SWIM / SWIM Cloud Distribution Service
    method: executed FAA SWIM agreement via the SWIFT Portal
    source: https://portal.swim.faa.gov/
  - api: SWIM CDM, TFMS Request/Reply, TFMS International Data Provider
    method: email request to Data-To-Industry@faa.gov, reviewed in accordance with FAA policy
  - api: LAANC
    method: only through an FAA-Approved UAS Service Supplier, never directly
eligibility_gates:
- api: FAA Air Carrier PRD API
  gate: regulatory
  verbatim: >-
    "Access is restricted to operators under Part 121, 135, 125, 91K, Air Tour, Public
    Aircraft, or 91 Corporate. Requests for access from any other public or private
    entities will not be authorized."
  source: FAA Gravitee portal catalog record
scopes:
  present: false
  note: >-
    No OAuth means no scope surface. This repo deliberately carries no scopes/
    artifact — see conventions/faa-conventions.yml.
discovery:
  oauth_authorization_server: 404 on every FAA host probed
  openid_configuration: 404 on every FAA host probed
  source: well-known/faa-well-known.yml
gaps:
- No OAuth 2.0 / OIDC anywhere, so no delegated access and no consent model.
- No scopes, so no least-privilege credential for any FAA API.
- No documented key rotation, expiry or revocation policy.
- The PRD credential is modelled as a parameter, not a security scheme.
- The SAS security schemes are defined but never applied.
- The gateway key header appears in no published spec.