PassiveLogic · Authentication Profile

Passivelogic Authentication

Authentication

PassiveLogic secures its APIs with apiKey, http, and openIdConnect across 5 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode, clientCredentials, and deviceCode flow(s).

Companydigital-twinbuilding-automationhvacsmart-buildingsautonomous-systemsgraphqlontologyiotedge-computingphysical-aienergy
Methods: apiKey, http, openIdConnect Schemes: 5 OAuth flows: authorizationCode, clientCredentials, deviceCode API key in: header

Security Schemes

XSRF header apiKey
· in: header (X-PL-AUTH)
Basic Auth - login http
scheme: basic
PL API Key apiKey
· in: header (PL-API-KEY)
DEPRECATED - PL API Key apiKey
· in: header (Authorization: PL-API-KEY)
Keycloak OpenID Connect openIdConnect

Source

Authentication Profile

Raw ↑
generated: '2026-08-04'
method: searched
source: openapi/passivelogic-rest-api-openapi.yml
docs: https://quantumalliance.org/documentation/
summary:
  types:
  - apiKey
  - http
  - openIdConnect
  api_key_in:
  - header
  identity_provider: Keycloak (external), realm "prod"
  oauth2_flows:
  - authorizationCode
  - clientCredentials
  - deviceCode
schemes:
- name: XSRF header
  type: apiKey
  in: header
  parameter: X-PL-AUTH
  description: Authentication using an XSRF protected JWT
  sources:
  - openapi/passivelogic-rest-api-openapi.yml
- name: Basic Auth - login
  type: http
  scheme: basic
  description: >-
    Basic authentication used only at login. The Quantum documentation shows a GET with basic auth against
    /api/auth/login returning a JSON object with authorization and refresh tokens.
  sources:
  - openapi/passivelogic-rest-api-openapi.yml
  - https://quantumalliance.org/documentation/
- name: PL API Key
  type: apiKey
  in: header
  parameter: PL-API-KEY
  description: >-
    Long-lived API key issued to a user by GET /api/auth/api-key/generate. Per the Quantum documentation an API key
    "acts with the same permissions as a JWT for the user who generated them" and is intended for command-line and
    scripting use. Keys are revoked with DELETE /api/auth/api-key.
  sources:
  - openapi/passivelogic-rest-api-openapi.yml
  - https://quantumalliance.org/documentation/
- name: 'DEPRECATED - PL API Key'
  type: apiKey
  in: header
  parameter: 'Authorization: PL-API-KEY'
  description: DEPRECATED - PL API Key in Bearer header
  deprecated: true
  sources:
  - openapi/passivelogic-rest-api-openapi.yml
- name: Keycloak OpenID Connect
  type: openIdConnect
  openIdConnectUrl: https://login.passivelogic.com/realms/prod/.well-known/openid-configuration
  description: >-
    Not declared in the OpenAPI, but the actual interactive login path. Every /app/login/* operation in the spec is
    documented as "Redirects to external authentication provider (Keycloak)", and the public
    GET /api/util/externalauthconfig endpoint returns the issuer, authorization endpoint and account-management URI
    for the login.passivelogic.com "prod" realm. Supports authorization_code (PKCE S256), client_credentials,
    device_code, refresh_token, token-exchange and CIBA; DPoP and mTLS-bound access tokens are advertised.
  sources:
  - well-known/passivelogic-openid-configuration.json
  - https://passivelogic.com/api/util/externalauthconfig
token_signing:
  jwks_endpoint: https://passivelogic.com/api/auth/keys
  note: >-
    PassiveLogic publishes the public keys used to sign its own JSON Web Tokens at GET /api/auth/keys (anonymous,
    ES384 over P-384). The Keycloak realm publishes a separate JWKS at
    https://login.passivelogic.com/realms/prod/protocol/openid-connect/certs.
x-evidence:
  fetched: '2026-08-04'
  probes:
  - url: https://passivelogic.com/api/doc
    http_status: 200
  - url: https://passivelogic.com/api/util/externalauthconfig
    http_status: 200
  - url: https://passivelogic.com/api/auth/keys
    http_status: 200
  - url: https://login.passivelogic.com/realms/prod/.well-known/openid-configuration
    http_status: 200