Apiman · Authentication Profile

Apiman Authentication

Authentication

Apiman secures its APIs with openIdConnect and http across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode and password flow(s).

API GatewayAPI ManagementDeveloper PortalJavaOpen-SourcePolicy EnforcementSelf-HostedKeycloak
Methods: openIdConnect, http Schemes: 3 OAuth flows: authorizationCode, password API key in:

Security Schemes

keycloakOidc openIdConnect
gatewayBasicAuth http
scheme: basic
managedApiKey apiKey

Source

Authentication Profile

Raw ↑
generated: '2026-09-06'
method: searched
source: >-
  https://www.apiman.io/apiman-docs/installation-guide/latest/keycloak.html,
  https://www.apiman.io/apiman-docs/installation-guide/latest/gateway/security.html,
  https://www.apiman.io/apiman-docs/user-guide/latest/crash-course/managing-apiman.html,
  openapi/_original/apiman-openapi.json
docs: https://www.apiman.io/apiman-docs/installation-guide/latest/keycloak.html
spec_gap: >-
  The published OpenAPI (https://www.apiman.io/openapi.json, 3.0.1, 128 paths / 177
  operations) declares NO components.securitySchemes and NO top-level security block, so
  a mechanical derivation from the spec yields nothing. Everything below is read from the
  provider's own installation and user guides. This is a real contract gap worth raising
  with the project: an agent reading only the spec cannot tell that the entire Manager
  API is authenticated.
summary:
  types: [openIdConnect, http]
  api_key_in: []
  oauth2_flows: [authorizationCode, password]
  authorization_model: role-based (Keycloak realm roles + Apiman organization roles)
schemes:
- name: keycloakOidc
  type: openIdConnect
  applies_to: Apiman Manager REST API and Manager UI
  description: >-
    The Manager REST API is protected by Keycloak (OIDC). Apiman 3 no longer bundles a
    Keycloak server; the operator runs one and points Apiman at it. Keycloak clients:
    `apiman` (Manager API), `apimanui` (Manager UI), `apiman-gateway-api` (Gateway API).
    Default realm name is `apiman`; the realm definition ships in the distribution as
    apiman/data/apiman-realm-for-keycloak.json.
  configuration:
  - property: apiman.auth.url
    env: APIMAN_AUTH_URL
    description: Keycloak auth server URL (required)
  - property: apiman.auth.realm
    env: APIMAN_AUTH_REALM
    description: Keycloak realm name (default `apiman`)
  - property: apiman.auth.api.secret
    env: APIMAN_AUTH_API_SECRET
    description: Client secret for the `apiman` Manager API client (default must be changed before production)
  - property: apiman.auth.ui.secret
    env: APIMAN_AUTH_UI_SECRET
    description: Client secret for the `apimanui` Manager UI client
  - property: apiman.auth.gateway.secret
    env: APIMAN_AUTH_GATEWAY_SECRET
    description: Client secret for the `apiman-gateway-api` Gateway API client
  - property: apiman.auth.realm-public-key
    env: APIMAN_AUTH_REALM_PUBLIC_KEY
    description: >-
      Realm public key. Only needed on the Vert.x gateway; otherwise Apiman retrieves it
      from the Keycloak server's .well-known endpoint automatically.
  discovery: >-
    Keycloak's own OIDC discovery document (/realms/<realm>/.well-known/openid-configuration)
    on the operator's Keycloak host. Apiman itself serves no discovery document — see
    well-known/apiman-well-known.yml.
  sources: [https://www.apiman.io/apiman-docs/installation-guide/latest/keycloak.html]
- name: gatewayBasicAuth
  type: http
  scheme: basic
  applies_to: Apiman Gateway configuration REST API (invoked by the Manager when publishing)
  description: >-
    "This REST API should be protected, usually by BASIC authentication. By default, the
    Apiman Gateway REST API requires BASIC authentication credentials, as well as a role
    of apipublisher." Default quickstart user `apimanager` / `apiman123!` — documented
    development credentials that must be changed before production.
  required_role: apipublisher
  keycloak_client: apiman-gateway-api
  vertx_config:
    flowType: PASSWORD
    requiredRole: "realm:apipublisher"
    resource: apiman-gateway-api
  unauthenticated_exception: >-
    /system/status on the Vert.x Gateway API is reachable without auth as of 3.1.2.Final,
    so health checks do not need credentials.
  sources: [https://www.apiman.io/apiman-docs/installation-guide/latest/gateway/security.html]
- name: managedApiKey
  type: apiKey
  applies_to: APIs published THROUGH the Apiman gateway (runtime traffic, not the Manager API)
  description: >-
    Apiman mints an API key per Client App version, retrieved with getClientApiKey and
    rotated with updateClientApiKey. Consumers present it to the gateway when calling a
    managed API under a contract. This authenticates the gateway's downstream consumers,
    NOT calls to the Manager REST API — do not confuse the two surfaces.
  operations: [getClientApiKey, updateClientApiKey, getApiRegistryJSON, getApiRegistryXML]
  policy_plugin: io.apiman.plugins:apiman-plugins-apikey-policy
  sources: [openapi/apiman-organizations-api-openapi.yml]
authorization:
  model: role-based
  realm_roles:
  - name: apipublisher
    description: Required to invoke the Gateway configuration REST API.
  - name: apiadmin
    description: Apiman administrator (system administration section, gateways, plugins, policy definitions, roles).
  organization_roles:
  - name: Organization Owner
    description: Automatically granted to the creator of an organization; all permissions.
  - name: API Developer
    description: Plan view/edit/admin and API view/edit/admin.
  - name: Client App Developer
    description: Client App view/edit/admin only.
  custom_roles: >-
    Administrators can define arbitrary roles from the permission set (org/plan/API/client
    view, edit, admin) in the Roles section of System Administration, and mark roles as
    auto-granted on organization creation (RoleBean.autoGrant, at least one such role must exist).
  discoverability: >-
    Apiman also has an implicit read-permission system ("discoverability") analogous to a
    public GitHub repository, letting non-members — including anonymous users — find and
    subscribe to APIs. It is set per API version and per plan (ApiVersionBean.discoverability,
    ApiPlanBean.discoverability).
  inspection_operations: [getPermissionsForUser, getInfo, listMembers, grant, revoke, revokeAll]
  no_scopes: >-
    Apiman publishes no OAuth scope reference. Authorization is expressed as Keycloak
    realm roles plus Apiman's own organization-scoped permission grid, so scopes/ is
    deliberately absent rather than empty.

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/apiman-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.