Skip to main content

#OAuth2 discussing

Environment: Tableau Cloud, REST API 3.29, tableauserverclient (Python), Snowflake connection with authentication='oauth', oauth-config-id='default', server-oauth='server-custom'. 

 

ISSUE 

 

We publish workbooks via REST API/PAT in a CI/CD pipeline. We're trying to reproduce a connection state that Tableau Desktop can produce, but the REST API can't. 

 

Desktop-published state (Data Sources tab shows "Not embedded in connection"): 

auth_type='oauth' username='<user>' embed_password=False 

 

Our pipeline's state (REST API publish): 

auth_type='oauth' username='' embed_password=False 

 

The Desktop state results in viewers being prompted for their own credentials. Ours results in every viewer getting BadOAuthCredentials, since there's no username hint at all. 

 

WHAT WE TRIED 

 

Using Server.workbooks.update_connection() (PUT /workbooks/{id}/connections/{connectionId}), we tested every combination: 

 

1. embed_password=True + username -> credential embeds, all viewers connect silently as that one identity (no prompt). 

2. embed_password=False + blank username -> every viewer gets BadOAuthCredentials. 

3. embed_password=False + non-empty username (trying to match Desktop) -> the server silently discards the username; a follow-up GET always returns username=''. No error is returned, it just reverts. 

4. Re-embedding (embed_password=True) via update_connection without supplying a password fails outright with 404020: Resource Not Found ... This may be due to incorrect or missing credentials. There's no way to flip an OAuth connection back to embedded through this endpoint without a real credential, and OAuth connections have no password-style credential the API can supply. 

 

We confirmed #3 fails identically whether attempted via connections=[ConnectionCredentials(...)] at publish time, or via a separate post-publish update_connection call. Same result both ways. 

 

QUESTIONS 

 

1. Is there any documented REST API mechanism (any endpoint, any API version) to set an OAuth connection to embedPassword=false while preserving a non-empty userName hint, matching what Desktop produces? 

2. Is that "not embedded + username hint" state inherently tied to an interactive/vizportal-authenticated session (i.e. genuinely unreachable via PAT/REST), or is there an undocumented parameter/flow we're missing? 

3. Is per-viewer OAuth prompting for a Snowflake connection with oauth-config-id='default' expected to work at all when the workbook was published via REST API/PAT, or is this a Desktop-only capability? 

 

Happy to share full request/response payloads if that helps with diagnosis. 

 

#OAuth  #Tableau APIs & Embedding

 

#Tableau Cloud  #Tableau Server

 

 

#Snowflake

1 answer
  1. Sep 14, 7:44 PM

    Hi @Wascar Perez

     

    thanks for sharing the details with the community. 

    What I would try if I were in your shoes: set embed_password=True with your REST API pipeline as usual, then try to unset the embedded password with the VizPortal API. It is undocumented and unofficial, but you just need to trace your browser traffic with dev tools when using the Server UI then google the VizPortal API info a bit to see how to authenticate against it and you will figure it easily if you are a developer. 

    I checked on my sandbox. It is this endpoint:

    Hi thanks for sharing the details with the community.

0/9000

Good afternoon, Ohana   

We are currently facing a critical issue with our monday.com Salesforce integration where data has stopped flowing from Salesforce to monday.com. We have been working with monday.com technical support, but we are still stuck at the "handshake successful but no data moving" stage.

The Current State:

  • We have both the Legacy Integration and the new Salesforce Two-Way Sync App installed in our monday.com environment.
  • The connection shows as "Polling Successfully" in the monday.com backend logs.
  • The Connected App policies in Salesforce are configured for "Relax IP Restrictions" and "Refresh token is valid until revoked."
  • Despite the successful connection, creating/updating a record in Salesforce does not trigger an item creation call in monday.com.

What we have tried/verified:

  1. Change Data Capture (CDC): We have enabled CDC for the relevant objects (specifically the Case object).
  2. Auth Handshake: We deleted the corrupted tokens/connections in the monday.com Autopilot hub and established a fresh connection.
  3. App Transition: We attempted to move the specific workflow from the legacy integration to the new Salesforce Two-Way Sync App to rule out stale token architecture.
  4. HAR Analysis: A .HAR file was captured and is currently being reviewed by support.
  5. Permission Audit: The authenticating user has "offline access" and "View All" permissions for the target objects.

The specific roadblock: Even with the "Two-Way Sync" app, we are unable to successfully map the Link field (monday.com) to the Object ID (Salesforce), and Salesforce events are seemingly not reaching the monday.com listener.

Has anyone encountered a scenario where the integration is authenticated and polling, but the event-stream from Salesforce fails to initiate the creation call? Are there specific Apex Triggers or Platform Event permissions within the monday.com Managed Package that might be silently failing?

Any insight into the "polling but not creating" behavior would be greatly appreciated.    

2 answers
  1. Jun 7, 5:13 AM

    Hey Ohana!

    I wanted to circle back and share an update on the issue I posted about recently regarding our Salesforce to monday.com Two-Way Sync App. To recap: our backend logs showed we were "Polling Successfully," but creating or updating a record in Salesforce refused to trigger an item creation in monday.com.

    After digging into it with monday.com’s engineering team, we found the root cause. It wasn't a filter mismatch or a failure in our Change Data Capture (CDC) setup. Instead, it was a classic case of "token tangling" caused by technical debt. Because our integration recipes had been handed off and moved between multiple admins and users over time, the backend OAuth connection tokens became severely fragmented in the database. The system thought it was polling fine, but the payload was dropping due to stale user states.

    We haven't fully ironed out our custom field mapping yet, but the core data flow is finally working! Here is the exact fix we used to untangle the tokens and get data moving again:

    🛠️ The Fix: Complete Token & Ownership Reset

    If you are running into a successful handshake but zero data movement, try these steps to force a clean slate:

    1. Update the Package: Ensure you are running the absolute latest version of the monday.com Managed Package in Salesforce.
    2. Transfer Automation Ownership: Open your monday.com board, go into the automation recipe, and explicitly transfer the ownership of the automation to your designated, permanent integration user/service account.
    3. Force a New OAuth Handshake: Click Reconnect within the recipe. Crucial: Do not just re-authorize the default account. Click "Use another account" and manually enter the credentials for your designated integration user. This forces Salesforce to issue a brand-new, clean access token.
    4. Power Cycle: Toggle the integration recipe OFF and then back ON to force the listener to register the new token state.
    5. Test: Trigger a record update in Salesforce to validate the incoming data stream.

    A huge thank you to everyone who offered insights on our initial post! Hopefully, this saves someone else a few days of troubleshooting.

    #Integration #Monday.com #OAuth

0/9000

Hi,​

​

Can you please tell me how to implement the Client function of OAuth (Resource Owner Password Credentials) in Mulesoft?

  • grant_type: password

​

Http Connector only supports the following Flow.

  • Authorization Code
  • Client Credentials

​

Is it possible to achieve this by combining the following?

  • http connector(Client Credentials)
  • Component(Transform Message、Set Payload、Custom(Java/Scripting))

 

https://help.mulesoft.com/s/article/HTTP-Connector-do-not-support-the-OAuth-Password-Credentials-Grant-type

The password credentials grant MUST NOT be used.This grant type insecurely exposes the credentials of the resource owner.

->However, our system requires Resource Owner Password Credentials.

 

#http connector

 

#OAuth(Resource Owner Password Credentials)

4.3. Resource Owner Password Credentials Grant

 

Thanks,

Akihiko

0/9000