Multi-factor authentication enforcement breaks automated material requisition workflows

After enabling MFA enforcement in Oracle Fusion Cloud 23C, our automated material requisition processes are completely broken. The service account we use for automated workflows now gets 403 Forbidden errors because it can’t complete the MFA challenge.


Error: MFA_REQUIRED
Message: Multi-factor authentication required for user SERVICE_MATREQ
Authentication method: PASSWORD requires additional verification

We have dozens of scheduled jobs that create material requisitions based on inventory thresholds, and they all authenticate using this service account. The MFA policy is applied globally, so there’s no way to bypass it for these automated processes. I’ve looked into OAuth2 client credentials flow and certificate-based authentication as alternatives, but I’m not sure which approach is best for our material management workflows. We also need to maintain IP whitelist configuration for security compliance. How do others handle MFA requirements for service accounts in automated scenarios?

Here’s a comprehensive solution for handling MFA requirements with automated material requisition workflows in Oracle Fusion Cloud 23C:

1. MFA Policy Exceptions for Service Accounts: Create a targeted MFA exemption policy rather than a blanket exemption:

  • Navigate to Security Console > Authentication Policies > Multi-Factor Authentication
  • Create a new policy named “Service Account Automation Exception”
  • Add your service account (SERVICE_MATREQ) to the exemption list
  • Set conditions: “Apply only when authentication source is OAuth2 Client Credentials”
  • This ensures the exemption only applies to properly authenticated automation workflows, not to any password-based login attempts

2. OAuth2 Client Credentials Flow Implementation: Register your automation application for OAuth2 authentication:

  • Go to Setup and Maintenance > Manage Confidential Applications
  • Create new application: “Material Requisition Automation”
  • Scope: `urn:opc:resource:consumer:all urn:opc:resource:scm:materials::write
  • Note the generated Client ID and Client Secret

Update your automation code to use client credentials:

String tokenUrl = "https://your-instance.fa.oraclecloud.com/oauth/token";
String credentials = Base64.encode(clientId + ":" + clientSecret);
HttpPost request = new HttpPost(tokenUrl);
request.setHeader("Authorization", "Basic " + credentials);
request.setEntity("grant_type=client_credentials&scope=" + scope);

3. IP Whitelist Configuration: Restrict OAuth client usage to your automation servers:

  • In the Confidential Application settings, enable “Restrict by IP Address”
  • Add your automation server IP ranges: 10.50.100.0/24 (adjust to your network)
  • Enable “Strict IP Validation” to prevent token usage from unauthorized locations
  • Configure firewall rules to ensure only your automation infrastructure can reach the OAuth endpoints

4. Certificate-Based Authentication (Recommended for Production): Implement certificate authentication for maximum security:

  • Generate a certificate for your automation application: `openssl req -x509 -newkey rsa:4096 -keyout automation.key -out automation.crt -days 730
  • Upload the public certificate to Fusion: Security Console > Certificate Management > Add Trusted Certificate
  • Configure your OAuth client to require certificate authentication
  • Update your automation code to include the certificate in authentication requests

With certificate-based auth, your token request becomes:

SSLContext sslContext = SSLContextBuilder.create()
  .loadKeyMaterial(keystoreFile, keystorePassword, keyPassword)
  .build();
HttpClient client = HttpClients.custom().setSSLContext(sslContext).build();
// Token request includes certificate authentication

The certificate approach eliminates the need for client secret management and provides non-repudiation for audit compliance.

Implementation Steps:

  1. Register OAuth client and configure IP restrictions (Day 1)
  2. Update automation code to use client credentials flow (Day 2-3)
  3. Test with MFA exemption policy in place (Day 4)
  4. Generate and configure certificates for production (Day 5-6)
  5. Deploy to production and monitor authentication logs (Day 7)

After implementing OAuth2 with certificate authentication, your material requisition workflows will function without MFA challenges while maintaining security compliance. The IP whitelist and certificate requirements provide compensating controls that satisfy audit requirements even with the MFA exemption in place.


This draft is based on general Oracle Fusion Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

You need to create MFA policy exceptions specifically for service accounts. Navigate to Security Console > MFA Configuration and add your service account to the exemption list. However, you’ll need to implement compensating controls like IP restrictions and certificate-based authentication to satisfy audit requirements.

Instead of exempting the service account from MFA, I’d recommend switching to OAuth2 client credentials flow. This authentication method doesn’t require MFA because it uses client secrets instead of user passwords. You’ll need to register your automation application in Fusion and obtain client credentials, but it’s more secure and scalable than maintaining MFA exemptions for service accounts.

Confirmed this resolves our automated requisition failures — creating the OAuth2 Client Credentials condition in the Service Account Automation Exception policy prevented MFA prompts without broadening our security exposure.

The OAuth2 approach sounds promising. Can I use the same service account with client credentials flow, or do I need to create a new application registration? Also, will this work with our existing material requisition API calls without major code changes?

You’ll create an OAuth client registration that’s linked to your service account’s permissions. The API calls remain the same - you just change how you obtain the access token. Instead of username/password authentication, you exchange client credentials for an access token. The material management APIs accept the same bearer token format regardless of how it was obtained.

For IP whitelisting, configure allowed IP ranges in the OAuth client settings. This ensures tokens can only be obtained from your automation servers’ IP addresses.

Consider certificate-based authentication as an additional layer. It’s more secure than client secrets and doesn’t require MFA. You generate a certificate for your automation application, upload the public key to Fusion, and use the private key to sign authentication requests. This is especially useful for high-security environments where client secrets might not meet compliance requirements. The certificate approach also eliminates the need for MFA exemptions entirely.