Oracle Cloud Infrastructure · Authentication Profile
Oracle Cloud Authentication
Authentication
Oracle Cloud Infrastructure secures its APIs with http-signature across 1 declared security scheme, as derived from its OpenAPI definitions.
Cloud ComputingEnterprise CloudInfrastructure-as-a-ServiceOraclePlatform-as-a-ServiceComputeObject StorageIdentity and Access ManagementDatabaseKubernetesServerlessMonitoringEvent-Driven
Methods: http-signature
Schemes: 1
OAuth flows:
API key in:
Security Schemes
ociSignature http-signature
scheme: signature
Source
Authentication Profile
generated: '2026-08-29'
method: searched
source: >-
https://docs.oracle.com/en-us/iaas/Content/API/Concepts/signingrequests.htm and
https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_authentication_methods.htm,
corroborated against openapi/_original/ (Oracle's own Swagger 2.0 contracts).
docs: https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_authentication_methods.htm
provider: Oracle Cloud Infrastructure
providerId: oracle-cloud
summary:
types:
- http-signature
oauth2: false
api_key_header: false
bearer_token: false
primary_scheme:
name: OCI Request Signature
type: http-signature
standard: draft-cavage-http-signatures-08
standard_statement: >-
Verbatim from Oracle: "It's a draft specification that forms the basis for how Oracle handles
request signatures."
header: Authorization
scheme_token: Signature
header_note: >-
Verbatim: "The Oracle Cloud Infrastructure signature uses the Signature Authentication scheme
(with an Authorization header), and not the Signature HTTP header."
format: >-
Authorization: Signature version="1",keyId="<tenancy_ocid>/<user_ocid>/<key_fingerprint>",
algorithm="rsa-sha256",headers="<space separated list>",signature="<base64>"
algorithm: rsa-sha256
algorithm_note: 'Mandatory. Oracle: "The signing algorithm must be RSA-SHA256."'
key_id_format: ocid1.tenancy.oc1..<id>/ocid1.user.oc1..<id>/<key_fingerprint>
signed_headers:
get_and_delete: ['(request-target)', host, 'date or x-date']
post_and_put: ['(request-target)', host, 'date or x-date', x-content-sha256, content-type, content-length]
post_and_put_note: >-
Verbatim: "For PUT and POST requests, your client must compute the x-content-sha256 and
include it in the request and signing string, even if the body is an empty string. Also, the
content-length is always required in the request and signing string, even if the body is
empty."
object_storage_exception: >-
For Object Storage PutObject / UploadPart only (request-target), host and date/x-date are
required.
rules:
- Header names must be lowercase in the signing string.
- Query parameters must appear in the signing string in the same order as in the request.
- 'Clock skew over 5 minutes returns 401 NotAuthenticated.'
credential_sources:
- id: api-key
name: API signing key (config file)
description: RSA key pair; the public key is uploaded via UploadApiKey and identified by fingerprint. Config at ~/.oci/config.
used_by: [SDKs, CLI, Terraform provider, Oracle MCP servers over stdio]
- id: instance-principal
name: Instance principal
description: A compute instance authenticates as itself using a certificate issued by the instance metadata service. No key on disk.
- id: resource-principal
name: Resource principal
description: A Function, Data Science job or other managed resource authenticates as itself.
- id: session-token
name: Security token (session)
description: Browser-based `oci session authenticate`; short-lived token in the config profile.
- id: workload-identity
name: Workload identity
description: An OKE pod authenticates as a Kubernetes service account mapped to an OCI principal.
- id: obo
name: Instance-obo-user
description: An instance acting on behalf of the user who launched the session.
authorization:
model: IAM policies
description: >-
OCI has no roles or scopes. Access is granted by plain-language policy statements attached to a
compartment or tenancy, e.g. `Allow group Developers to manage instance-family in compartment Dev`.
failure_modes:
- {status: 401, code: NotAuthenticated, meaning: Signature, key id or clock is wrong.}
- {status: 403, code: NotAuthorized, meaning: Authenticated, but no policy grants the operation.}
- {status: 403, code: NotAllowed, meaning: The operation must be directed at the tenancy home region (IAM writes).}
- {status: 404, code: NotAuthorizedOrNotFound, meaning: Deliberately conflates "does not exist" with "not permitted".}
oauth:
control_plane: false
note: >-
OAuth 2.0 / OIDC appear at the edges of OCI — identity domains issue tokens for console and
application sign-in, and the HTTP transport of Oracle's own MCP server requires an OCI IAM
confidential application with the scope `oci_mcp.<server>.invoke` — but the OCI REST control
plane described by the contracts in this repo does not accept bearer tokens.
scopes_artifact: null
scopes_note: >-
derive-oauth-scopes.py found zero oauth2 securitySchemes across this repo, so no scopes/
artifact is emitted. That is correct, not a gap.
corrections:
- date: '2026-08-29'
was: >-
The previous derived revision recorded the scheme as `type: http, scheme: bearer` named
`ociSignature`, inherited from the AE-authored specs in openapi/_ae-authored/.
now: >-
Corrected to an HTTP request-signature scheme per draft-cavage-http-signatures-08. OCI does
not accept a bearer token, and an agent told otherwise will fail every call with 401.
schemes:
- name: ociSignature
type: http-signature
scheme: signature
description: OCI request signature authentication using RSA API signing keys (draft-cavage-http-signatures-08).
sources:
- openapi/_original/oracle-cloud-core-services-openapi.yaml
- openapi/_original/oracle-cloud-identity-openapi.yaml
- openapi/_original/oracle-cloud-object-storage-openapi.yaml
- openapi/_original/oracle-cloud-database-openapi.yaml
- openapi/_original/oracle-cloud-kubernetes-engine-openapi.yaml
- openapi/_original/oracle-cloud-monitoring-openapi.yaml
- openapi/_original/oracle-cloud-functions-openapi.yaml
- https://docs.oracle.com/en-us/iaas/Content/API/Concepts/signingrequests.htm
spec_note: >-
Oracle's own Swagger 2.0 documents declare NO securityDefinitions at all. The scheme is
documented only in prose, which is why this artifact is method:searched rather than derived.
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.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/oracle-cloud-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.