Skip to main content
An Oracle Cloud Infrastructure (OCI) compute instance can sign a token request to an identity domain in its tenancy with its instance principal. The identity domain returns a signed access token. Reducto verifies that token and returns a Reducto access token. There is no built-in OCI token provider in the Reducto SDKs. You pass a short function that uses the OCI SDK to get the token.

Set up the instance

Run the workload on an OCI compute instance with an instance principal. The instance must reach the metadata service and, over HTTPS, its identity domain:
On Oracle Kubernetes Engine (OKE), the instance principal identifies the worker node, not the pod. Every pod on the node gets the same identity.

Get and inspect a token

Sign a token exchange request to your identity domain with the instance principal:
The returned access token looks like this:
The audience comes from Oracle. You cannot request https://platform.reducto.ai, so configure Reducto with one of the aud values in your token. The iss is Oracle’s global issuer, but the signing keys are published by your tenant’s identity domain.

Configure Reducto

In Studio, open Settings > Workload identity and create a provider with the Oracle Cloud preset: Reducto fetches /.well-known/openid-configuration from the identity domain and uses its jwks_uri. If Reducto cannot reach it, use Uploaded JWKS with the keys from https://<identity domain>/admin/v1/SigningCert/jwk, and update them when Oracle rotates its keys. Add a mapping for the instance and tenancy: To allow every instance in a compartment, match ipst_compartment instead of ipst_instance. These OCI claims are top-level claims, so the mapping matches them directly and the provider needs no attribute transformations.

Call Reducto

Set OCI_IDENTITY_DOMAIN_URL to your identity domain, for example https://idcs-4f2a8c1e9b3d4e7f.identity.oraclecloud.com. The Python example needs pip install reductoai oci requests. The Node.js example needs npm install reductoai oci-common. The cURL example gets the Oracle token with the OCI Python SDK (pip install oci requests), because oci raw-request sends only JSON bodies and the identity domain token endpoint needs a form body.
The SDK calls the function each time it needs a new access token. Do not print or store the Oracle token.

OCI best practices

  • Match ipst_instance when only one instance should have access. Match ipst_compartment only when every instance in the compartment should.
  • Always add ca_ocid or domain_id to bind the mapping to your tenancy and identity domain.
  • On OKE, remember that the instance principal is the node. Do not rely on it to separate pods.
  • With an uploaded JWKS, update it when Oracle rotates the identity domain’s signing keys.