Cisco ACI · Authentication Profile
Cisco Aci Authentication
Authentication
Cisco ACI declares 3 security scheme(s) across its OpenAPI definitions.
SDNData-CenterNetworkingFabricAutomationEnterpriseNetwork AutomationInfrastructureControllerREST API
Methods:
Schemes: 3
OAuth flows:
API key in:
Security Schemes
APIC-cookie session-cookie
· in: cookie ()
APIC-challenge challenge-token
· in: header ()
external-identity
Source
Authentication Profile
generated: '2026-08-19'
method: searched
source: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-rest-api-configuration-guide/cisco-apic-rest-api-configuration-guide-42x-and-later/m_using_the_rest_api.html
docs: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-rest-api-configuration-guide/cisco-apic-rest-api-configuration-guide-42x-and-later/m_using_the_rest_api.html
note: >-
Derived from the published Cisco APIC REST API Configuration Guide (Release 4.2(x) and Later), chapter
"Using the REST API", read 2026-08-19. There is no OpenAPI securitySchemes block to derive from — Cisco
publishes no machine-readable contract for this API — so every field below is quoted from the human
documentation and cross-checked against the reference implementation in the CiscoDevNet ACI MCP server.
api: Cisco APIC REST API
transport: >-
HTTPS only by default. The guide states: "For security, only HTTPS is enabled as the default mode for API
communications. HTTP and HTTP-to-HTTPS redirection can be enabled if desired, but are less secure."
schemes:
- id: aaa-login-session-cookie
type: session-cookie
primary: true
name: APIC-cookie
in: cookie
description: >-
Username/password authentication against a special subset of request URIs — aaaLogin, aaaLogout and
aaaRefresh — used as the DN targets of a POST. The payload carries an aaaUser managed object with name
and pwd attributes. The response returns an authentication token both as a Set-Cookie header and as the
token attribute of the aaaLogin object (XPath /imdata/aaaLogin/@token). Subsequent requests present that
value as a cookie named APIC-cookie.
login:
method: POST
path: /api/aaaLogin.json
request_body: '{"aaaUser": {"attributes": {"name": "<username>", "pwd": "<password>"}}}'
encodings:
- json
- xml
logout:
method: POST
path: /api/aaaLogout.json
refresh:
method: POST or GET
path: /api/aaaRefresh.json
description: >-
The session must be refreshed within the timeout window or the token expires. The token changes on
every refresh.
session:
timeout_attribute: refreshTimeoutSeconds
default_timeout_seconds: 600
default_timeout_note: >-
"The default session timeout period is 600 seconds or 10 minutes." The aaaLogin response returns the
actual value in refreshTimeoutSeconds; the guide's worked example shows 300.
expiry_behavior: >-
An expired session returns HTTP 403. The CiscoDevNet ACI MCP server treats 403 as the signal to
re-run aaaLogin transparently.
- id: gui-challenge-token
type: challenge-token
primary: false
name: APIC-challenge
in: header
alternate_in: query
alternate_name: challenge
description: >-
An optional additional token, requested by adding ?gui-token-request=yes to the aaaLogin call. The
response body then carries a "urlToken" attribute whose value must accompany every subsequent request in
this session, either as an APIC-challenge HTTP header or as a challenge= URI parameter. Applies to REST
API calls; not available to the browser.
- id: login-domains
type: external-identity
primary: false
description: >-
The APIC supports authentication realms beyond the local user store. GET /api/aaaListDomains.json
returns the valid login domains for a controller (the guide's example returns "ExampleRadius" and
"local"), and the login name is prefixed with the domain to authenticate against RADIUS/TACACS+/LDAP.
discovery:
method: GET
path: /api/aaaListDomains.json
anonymous: true
oauth2: false
oauth2_note: >-
The APIC REST API does not use OAuth 2.0 or OpenID Connect, and declares no scopes. Authorization is
handled by the APIC's own RBAC model — security domains, roles and read/write privileges attached to the
aaaUser — not by bearer-token scopes. No scopes/ artifact was written; there is no scope surface to record.
api_keys: false
mtls:
supported: true
note: >-
The guide documents "Configuring a Custom Certificate for Cisco ACI HTTPS Access", and ACI additionally
supports X.509 certificate/signature-based API authentication for automation accounts. The certificate
is installed on the customer's own controller, so there is no public endpoint to probe.
gaps:
- No published OpenAPI securitySchemes block, so no machine-readable auth description exists.
- >-
No OAuth/OIDC and no scoped tokens: an automation credential is a full APIC user, and least-privilege has
to be expressed through APIC RBAC roles rather than through the token itself.