Hello,
I am trying to generate and sign a JWT for authentication with Google APIs in n8n. So far, everything in my workflow seems to work, except for the signing part. When I send my token to the Google API URI, it returns an invalid_signature error.
Any clues on how I could solve this issue?
NOTA: Generating a JWT using this website works, but I want to be able to automate the generation.
This is one of those things where it is going to be a case of comparing the JWT payload you generate with the payload that you get from the site just to make sure there are no odd differences.
Once thing I would say though is does the OAuth2 credential type not work for you? I feel like it should take care of most of this for you.
To be honest, my use case is to automatically update a domain users email signature using a workflow. To do that, I need to impersonate these users, and I can’t seem to do that with an OAuth credential nor with the HTTP request node.
If I simply use OAuth, I will get an error specifying that the access is restricted to service accounts that have been delegated domain-wide authority.
My service account indeed has been delegated domain-wide authority, thus why I am trying to generate a JWT to impersonate a user, then generate an OAuth access token using this JWT and finally be authorized to use the resource.
It’s a frustrating hassle and I can’t really seem to be able to sort it out.
That is strange, That error about being restricted is coming back from Google. I had it once and it took 24 hours for the Google Workplace change to go through.
I guess then it is going to be a case of carefully checking the input data to make sure there is nothing odd, This is one of those tricky flows that is going to take some time and a google account or 2 to play with.
Okay, so after double-checking again and again, I fixed the encoding of the header and claim set. Now the only issue I have is with the signature. Google provides private keys for its service accounts.
When trying to sign my token using the Crypto node, I get the following error: