When I am trying to insert records to Salesforce using ARC(OAuth2) getting below error Error: This session could not be mutually authenticated for use with the REST API

"message": "This session could not be mutually authenticated for use with the REST API",

403 Forbidden

But this working fine before. I getting this error suddenly.

Can anyone help me with this?

Thanks in advance


This is in the documentation:

If a login call is made from the API for a user with an expired or temporary password, subsequent API calls to custom Apex REST Web service methods aren't supported and result in the MUTUAL_AUTHENTICATION_FAILED error. Reset the user's password and make a call with an unexpired password to be able to call Apex Web service methods.

You need to set a new password to continue. Note that other types of REST API calls will also fail, but this seems to be the only explicit mention of this error message; other similar resources claim that the error also occurs for other types of REST API calls.

  • Thanks for the reply. I can able to get the access token but the issue occurs only when making an API call to upsert the records. Oct 16 '18 at 6:57
  • @LavanyaSanathkumar You can still log in to reset your password, but other methods are blocked. Have you tried setting a new password?
    – sfdcfox
    Oct 16 '18 at 7:04
  • thanks for the reply. Yes, it's working fine when I changed the password. Oct 16 '18 at 7:47
  • Thanks to @sfdcfox for that answer. For us, resetting the password worked only after this system permission was removed from the user via profile/permission set: Enforce SSL/TLS Mutual Authentication Most users likely won't run into this, but is something to consider when troubleshooting this.
    – c.jones
    Oct 30 '19 at 20:43
  • @c.jones - I have the same issue. But I have to enforce TLS per requirement. But I'm facing this issue "MUTUAL_AUTHENTICATION_FAILED". Jan 10 '20 at 23:23

I faced the same issue but it didn't work with changing the password. The reason is I was using Mutual TLS enforced. For this use case the request should use port 8443 explicitly.

curl -v --cacert cacert.crt --cert cert.pem --key private.key -X POST   https://mydomain.my.salesforce.com:8443/services/data/v47.0/sobjects/Case

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.