You can also use expressions in credentials. So you could set them dynamically by passing in the full credential information into the workflow and then access and use that data via an expression like this:
{{ $json.username }}
Goes without saying that it is obviously not the most secure thing to do.
Sadly not a pretty one, but the more secure alternative would be to:
Create for each user new credentials (could be done via the API)
Supply only the ID of the credentials you want to use to the workflow
Use the Execute Workflow Node set to “Parameter”
Change the “Workflow JSON” field to “Expression”
In it, you use the JSON of a simple workflow that uses the node you want to use, and set the ID of the credential dynamically
The best solution (allowing setting whole credentials dynamically via an expression) is currently sadly not supported. For that reason, the ugly workaround above.
Let’s say a thousand user reached to this workflow at the same time with their credentials, can they use the same workflow with their own credentials at the same time?