I had to use different authentication methods for the OCI SDK and this post is a way of recording it so that I wont spend so much time in the future 🙂
Option 1: Easy way with local config
This is the option I used the most and since I work mostly in demos and POC, it was more than enough for my needs.
const common = require("oci-common");
const configurationFilePath = "C:/Users/DANIMMAR/Documents/.oci/config";
const configProfile = "DEFAULT";
const opcRequestId = "ZSDZFYMMEQIJ2HXWVI7retsergsrf";
const provider = new common.ConfigFileAuthenticationDetailsProvider(
configurationFilePath
);
Option 2: Instance Principals
This is the choice when we need to authenticate from within an OCI Compute Instance.
const common = require("oci-common");
const provider = await new common.InstancePrincipalsAuthenticationDetailsProviderBuilder().build();
Option 3: Resource Principals
This is the choice when we need to authenticate from within an OCI Function.
const common = require("oci-common");
const provider = await common.ResourcePrincipalAuthenticationDetailsProvider.builder();
Option 4: Simple Authentication
I have not used this one, but it is similar to the config option – It gives more control over the parameters we pass to the authenticator.
// TODO: Fill in appropriate values for tenancy (str) / fingerprint (str) / passphrase(optional) (str | null) / privateKey (str) / region (common.Region)
const tenancy = "";
const user = "";
const fingerprint = "";
const passphrase = null; // optional parameter
const privateKey = ``;
const region = common.Region.US_PHOENIX_1; // Change to appropriate region
const provider = new common.SimpleAuthenticationDetailsProvider(
tenancy,
user,
fingerprint,
privateKey,
passphrase,
region
);
Policies
For the above authentication methods and to access the OCI individual services there are associated policies that must be in place. Please refer to the documentation.
Other Useful Links
- Resource Principals -> https://docs.oracle.com/en-us/iaas/Content/Functions/Tasks/functionsaccessingociresources.htm
- Instance Principals -> https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/callingservicesfrominstances.htm
- A-Team -> https://www.ateam-oracle.com/post/calling-oci-cli-using-instance-principal