Hi, i have gotten the demo instructions(<https://p...
# permit-saas
y
Hi, i have gotten the demo instructions(https://permit-demo-element.vercel.app/user-management) to work in my own app. But i cant manage to let my own permit elements work in my app. I had contact with Thomas before but we couldnt get it to work.
a
Hi @Yorrick Elzinga, I'm an AI assistant for Permit.io. I'll analyze available sources and get back to you shortly.
Since the demo is working but your own elements aren't, let's check the common integration points that often cause issues. First, ensure your JWKS configuration is properly set up in your Permit Dashboard (1) . Your Permit user key must match the JWT sub claim . You can verify your JWT sub at jwt.io . For the frontend integration, make sure you've installed the Permit-js SDK :
Copy code
npm install @permitio/permit-js
Then verify your login implementation matches this pattern for FrontendOnly login method :
Copy code
permit.elements
 .login({
 loginMethod: LoginMethod.frontendOnly,
 userJwt: "<YOUR_USER_JWT>",
 tenant: "<YOUR_TENANT_KEY>",
 envId: "<YOUR_ENV_ID>",
 })
 .then((res: any) => {
 console.log("success", res) ;
 })
 .catch((err: any) => {
 // you can handle the error either here or in your BE
 console.log("err", err) ;
 }) ;
Common login errors to check : • `USER_NOT_FOUND`: User doesn't exist in Permit or isn't assigned to the tenant • `TENANT_NOT_FOUND`: The tenant hasn't been created in Permit • `INVALID_PERMISSION_LEVEL`: The role is in Hidden Roles permission level • `FORBIDDEN_ACCESS`: User lacks permission to see the element After successful login, you should receive a
permit_session
cookie . To help debug further, could you share: 1. Which Workspace / Project / Env you are using 2. What SDK calls you're making (as code or CURL) 3. Which PDP version you're running 4. Any relevant logs from your PDP This will help identify the specific issue preventing your elements from working.
To learn more, see the sources I considered: [[1] Embedding Elements](https://docs.permit.io/embeddable-uis/embedding-elements)
a
Hey @Yorrick Elzinga, thanks for reaching out, what's exactly not working for you? what do you see?
y
I am getting 404 errors, which look like they are coming from the permit/permit-js package( permit.ts elemtents.ts etc.) Also i am getting an error for the /me api call saying method not allowed
o
Hi Yorrick, these sound like you still haven’t implemented the login correctly. I’m afraid, that’s something you’d have to accomplish first - we’re happy to provide guidance on specific items you need help with, but unfortunately we can’t implement this for you
y
I dont expect you to implement this but i have had a call with @Thomas he advised to make a new thread and wait for a developer who can assist me ont his
o
You’d need to ask specific questions for us to be able to help you. We can’t help much with general “it doesn’t work” - e.g. a 404 error can come from many function calls and can mean many things.
y
Sure, i will put that in later today. Im at work right now and dont have the exact errors available
o
Alright
y
When i use the same code as the demo but with my envid, tenant, and jwt im getting this error:
Copy code
{id: "3fed9f00d29d4f0aa2e154e4c09891a0", title: "The request was invalid", error_code: "INVALID_INPUT",…}
error_code
: 
"INVALID_INPUT"
id
: 
"3fed9f00d29d4f0aa2e154e4c09891a0"
message
: 
"We are sorry for the inconvenience, The JWT token could not be decoded, JWT ends with:kBbg. Please check the JWT token and try again.\nIf the issue keeps happening, contact our support on Slack for further guidance."
title
: 
"The request was invalid"
Copy code
Request URL
<https://api.permit.io/v2/auth/4e9eb067dd114f51950886a823c76c4b/elements_fe_login_as>
Request Method
POST
Status Code
400 Bad Request
Remote Address
3.130.119.152:443
Referrer Policy
strict-origin-when-cross-origin
p
Hey, thanks for reaching out ! It seems our team is a little busy right now, a human will be with you within the next hour or so. In the meantime, can I help you ?
o
Seems that the JWT you provided is invalid or malformed,
The JWT token could not be decoded, JWT ends with:kBbg. Please check the JWT token and try again.\nIf the issue keeps happening, contact our support on Slack for further guidance.”
y
Yeah, im looking into it myself, what i notice when decoding my jwt in jwt.io with my jwks token which is in permito settings
I get an error
Copy code
Invalid public key format or structure.
Strange thing is the jwks should be right. when i paste it in permit changes the structure of the jwks so feels like permit is messing with it
jwt.io was also mentioning something about the 'kty' not being present but its the last value in my jwks
But when i pasted it permit it was 1st or 2nd
Copy code
The provided key is not a valid JWK. The 'kty' member must be present in a JWK as defined on RFC 7517.
o
Can you please share your JWKS (it’s a public key- so okay to share) here; As well as the workspace/project/env) - if there’s a bug malforming your JWKS it will enable us to investigate CC: @Shuvy Ankor , @Alon Boshi
y
Copy code
{
  "keys": [
    {
      "e": "AQAB",
      "n": "nRmnPsDK49gtlYhnAq6pN6awGY7AcLyHK52GaHIhAmUiNI3dUpOg6vuMs5ZxPTWq5WD-5lu2KI72hHbV1XauoTMSnyepJXmRgaVCXj00lWbKrUcFfP0V3nF3RyzfDgBc3hY1JNkGVjH8v04slI8juyqhnYqKvHWy9CTzrW5988AZr56XwgnCx45y1TfKXo0hMKuHgvzN4yzXuSu5MlwIIGukw4d8NGby-m1z0aSdioJMBVc0rAQTefp_cDZJ9x5gU93NxxCMbtQUSerp7__1edEU0rqlSfxJr0z5Sjp66Tu6xm7VCFFS2puT3Fdwul-g1kD-asETY0eDHx_f14BdcQ",
      "kid": "key-1",
      "kty": "RSA"
    }
  ]
}
Workspace AI-Chatbot"Default Project: Development
Copy code
iframe i am trying to render 

<iframe
title="Permit Element user-management"
src="<https://embed.permit.io/user-management?envId=4e9eb067dd114f51950886a823c76c4b&darkMode=false>"
width="100%"
height="100%"
style="border: none;"/>
If you need more info let me know
a
Hey @Yorrick Elzinga, checked also in jwt.io and you should insert there:
Copy code
{
  "e": "AQAB",
  "n": "nRmnPsDK49gtlYhnAq6pN6awGY7AcLyHK52GaHIhAmUiNI3dUpOg6vuMs5ZxPTWq5WD-5lu2KI72hHbV1XauoTMSnyepJXmRgaVCXj00lWbKrUcFfP0V3nF3RyzfDgBc3hY1JNkGVjH8v04slI8juyqhnYqKvHWy9CTzrW5988AZr56XwgnCx45y1TfKXo0hMKuHgvzN4yzXuSu5MlwIIGukw4d8NGby-m1z0aSdioJMBVc0rAQTefp_cDZJ9x5gU93NxxCMbtQUSerp7__1edEU0rqlSfxJr0z5Sjp66Tu6xm7VCFFS2puT3Fdwul-g1kD-asETY0eDHx_f14BdcQ",
  "kid": "key-1",
  "kty": "RSA"
}
without the "keys" array
Taking a look and will circle back to you
y
Ah i see, then i am not getting an error in jwt.io indeed
this call returns : https://api.permit.io/v2/auth/4e9eb067dd114f51950886a823c76c4b/elements_fe_login_as
Copy code
{
  "detail": "Method Not Allowed"
}
a
Can you share your login method please?
y
Copy code
'use client';

import permit, { LoginMethod } from '@permitio/permit-js';
import { useEffect } from 'react';
// Use a JWT token to authenticate to <http://Permit.io|Permit.io>
export default function PermitDemoYorrick() {
    // Use a JWT token to authenticate to <http://Permit.io|Permit.io>
    const loginOptions = {
        loginMethod: LoginMethod.frontendOnly,
        userJwt:
            'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtleS0xIn0.eyJzdWIiOiI4Y2YxZWMxOC0xNzJmLTRmZDUtODJlNS1kNGIzYWM3ZmM2YWUiLCJ1c2VyX2lkIjoiOGNmMWVjMTgtMTcyZi00ZmQ1LTgyZTUtZDRiM2FjN2ZjNmFlIiwiaHR0cHM6Ly9wZXJtaXQuaW8vdGVuYW50IjoiZGVmYXVsdCIsImh0dHBzOi8vcGVybWl0LmlvL2VudiI6IjRlOWViMDY3ZGQxMTRmNTE5NTA4ODZhODIzYzc2YzRiIiwiaXNzIjoiaHR0cHM6Ly9kZWZhdWx0LnBlcm1pdC5pbyIsImF1ZCI6WyJodHRwczovL2RlZmF1bHQucGVybWl0LmlvIl0sImlhdCI6MTc1OTIyMzM4NCwiZXhwIjoxNzU5MjI2OTg0fQ.Ju2FwmNzy77Xl0Eo_A19S3_ZlBgYmOunURRkXm7VI3K-opeD3fCsJikNkRKsOEpLHQaMpztp9mYl2mwqtR11UGkaG9d1UlR_xx1Sgsi7cyGnuu8G72SQXsvVL6fg0ATATa2hJ8N-Zim_GDQ5_R1c3kY2CnFaXbF9aVTiumHq7I5QS_UlGpIA0G-EQA0bhoEEtHRAOvGKV95ma9_7fSvJYAI3X3Z0Sb3o_MNq-M7pGkNitxAXPfCPbdgudLVxYDEvQDzlflpNSw7FCjdXedliWSXytf_oBN8zRid7vvEHp6qpATsVz0Wg5fA5LB_cuvkvxG9jcN9qSldHOAGKmKQXMg',
        tenant: 'default',
        envId: '4e9eb067dd114f51950886a823c76c4b',
    };

    permit.elements
        .login(loginOptions)
        .then(() => {
            console.log('Successfully authenticated with <http://Permit.io|Permit.io>');
        })
        .catch((err) => {
            console.error('Login error:', err);
        });

    return (
        <iframe
            src="<https://embed.permit.io/user-management?envId=4e9eb067dd114f51950886a823c76c4b&darkMode=false>"
            style={{ border: 'none', width: '100%', height: '500px' }}
            title="<http://Permit.io|Permit.io> Element"
            allow="clipboard-write"></iframe>
    );
}
Im running my app in a docker container, which logs this error:
Copy code
nextjs-dev    | Login error: ReferenceError: document is not defined
nextjs-dev    |     at PermitElements.eval (../src/elements.ts:108:24)
nextjs-dev    |     at Generator.next (<anonymous>)
nextjs-dev    |     at new Promise (<anonymous>)
nextjs-dev    |     at PermitElements.login (../src/elements.ts:102:41)
nextjs-dev    |     at PermitDemoYorrick (src/components/permit/PermitDemoYorrick.tsx:17:9)
nextjs-dev    |   15 |
nextjs-dev    |   16 |     permit.elements
nextjs-dev    | > 17 |         .login(loginOptions)
nextjs-dev    |      |         ^
nextjs-dev    |   18 |         .then(() => {
nextjs-dev    |   19 |             console.log('Successfully authenticated with <http://Permit.io|Permit.io>');
nextjs-dev    |   20 |         })
a
Try to wrap the login call inside a
useEffect
hook to ensure it only runs on the client side
Copy code
export default function PermitDemoYorrick() {
    useEffect(() => {
        const loginOptions = {.......
y
That fixed the errors in the docker container thnx
a
can you ensure that you put the accurate env id and tenant?
y
I have double checked that with @Thomas
but i can screenshot it for you
a
and your user is part of the tenant?
y
only thing i can image the sub must be the email
ive tried that didnt seem to work
image.png,image.png,image.png
I changed sub to my email instead of the userid, still same error
"We are sorry for the inconvenience, The JWT token could not be decoded, JWT ends with:vRmw. Please check the JWT token and try again.\nIf the issue keeps happening, contact our support on Slack for further guidance."
a
i think i found your issue, i need you to Configure your JWKS at https://app.permit.io/settings/jwks-config to your env with this:
Copy code
{
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "n": "whtkYG3N8cFdj9NURXrGYnIlutaywFi_YYoQZdiU1yylG_qa0cI1m7hkbWAN2E2SevE2qXcyfJYaquckRiXEQgfL9VF4SDzzs5Zz6OlseVWjBBVXWEHm64TmBhr1zW7d8aB27dp4RcwWfrRUQ3onj4hA2Pp7Yo6wmkobRTMJEKe462DWWMT5Ta_AtTI1qONvOWe3iI_3rgiJ8VjuZvpPtsMtnWxLX_6vEqliwIw-RN6wmruQz1VGY-z1Bej5lVIwNRivqVxfXDviJXlGpxG-AqLOgpe1Ml4tlaCn7ciHlgR4CYKR72bKaJ9c--WLZyrVDtNJmwKm2JDZQkPNFXH7Sw",
      "e": "AQAB",
      "kid": "GoThkFRLnESuNS37R6vKM",
      "x5t": "gsVSPfe5kAUlgnQiO6wNX78I5IA",
      "x5c": [
        "MIIDETCCAfmgAwIBAgIJIouz3DZAIjt5MA0GCSqGSIb3DQEBCwUAMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTAeFw0yMTEyMDUxMTA2MDlaFw0zNTA4MTQxMTA2MDlaMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIbZGBtzfHBXY/TVEV6xmJyJbrWssBYv2GKEGXYlNcspRv6mtHCNZu4ZG1gDdhNknrxNql3MnyWGqrnJEYlxEIHy/VReEg887OWc+jpbHlVowQVV1hB5uuE5gYa9c1u3fGgdu3aeEXMFn60VEN6J4+IQNj6e2KOsJpKG0UzCRCnuOtg1ljE+U2vwLUyNajjbzlnt4iP964IifFY7mb6T7bDLZ1sS1/+rxKpYsCMPkTesJq7kM9VRmPs9QXo+ZVSMDUYr6lcX1w74iV5RqcRvgKizoKXtTJeLZWgp+3Ih5YEeAmCke9mymifXPvli2cq1Q7TSZsCptiQ2UJDzRVx+0sCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU3g+/8HGoZCg4CSjB2ENQREbZsKowDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQAfs70lODKnjw3QR5OYaxasDDTzEml0ca89QAYPr8T/br9SXXNgQr1fOgMd6L0ZAB9QBtxsROsc2qtrlOLruEEFKmczNx03acor5otOpLMUPa3FE5WA+4uvwTpkqWT16hmtUxEyn/6am0Jaanz8tOVEYuBlycfmXcZk00jHOYmAxVumTmLrXnguhdSaJn9yLl9vy5/KHD49asiYE7hARYvTkkRHWWsCJOCzYb+8j6Soo7025EOYpRBPSMlo/GDpGVMLqdJlV1RX1VYY//6wIj7aReuSlNB0AqzZ45mFY3HI/EatNa0pJ6tkUP+xON9XTeLMZ9Ny6bc7M/vgSVMIulUP"
      ],
      "alg": "RS256"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "n": "2sOuaIKjrYJw4yAcnVjeDEcEZjzQTUlg8s2_vx6rq-L3UCPoEc1s_kHBpqw0ZyNcplngtlqVC9vYtL51oGI3I1EX6WzMzWQGShXfVNxzW2HlQSpRUwCXZKaVH4K9bhE7MXnuIjQRhrNAOxP3ot_u-JuXCAbjcZHitESAzRFIKglhi7m_wecut_Z5XXEKaGlAKTT65-ouw17hZ1v3T9BlDSpaw-o3ckd6tJ9icWV-D2jQlmqnxsH5n5TSekFocc5JqVR6zkS7WHqkE7nbGrDr85VgyZ453Y7LKRphLa-J2WvZ5wSaG15Yidb7ZnTAG88A3aSb9gs_G4Q0_ln1-xFh9Q",
      "e": "AQAB",
      "kid": "4B95Zwy7anlgGvbfPRUFf",
      "x5t": "Co4yo_8w0TBa4jYh_8GiJ5oV9eY",
      "x5c": [
        "MIIDETCCAfmgAwIBAgIJLCV9bshilngoMA0GCSqGSIb3DQEBCwUAMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTAeFw0yMTEyMDUxMTA2MDlaFw0zNTA4MTQxMTA2MDlaMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANrDrmiCo62CcOMgHJ1Y3gxHBGY80E1JYPLNv78eq6vi91Aj6BHNbP5BwaasNGcjXKZZ4LZalQvb2LS+daBiNyNRF+lszM1kBkoV31Tcc1th5UEqUVMAl2SmlR+CvW4ROzF57iI0EYazQDsT96Lf7viblwgG43GR4rREgM0RSCoJYYu5v8HnLrf2eV1xCmhpQCk0+ufqLsNe4Wdb90/QZQ0qWsPqN3JHerSfYnFlfg9o0JZqp8bB+Z+U0npBaHHOSalUes5Eu1h6pBO52xqw6/OVYMmeOd2OyykaYS2vidlr2ecEmhteWInW+2Z0wBvPAN2km/YLPxuENP5Z9fsRYfUCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUeH45CveZIoUpbKvTsA861eXuYDUwDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQCIDoDCQ0uJuEVv3/kq6LzN14+OFH7oUF3FyAqGLyaH+TQtWu7fGb5yF7CDauSB6Y06OV1WALV4InImryib+B/dtdPm+J+SfuW4M4nFiu7w+tYzVnLr28qZNsIHYwa/z+Z9/9yn00t/CUlaZ8ExpTr8ab0YpIYT7M6ry8CmTns90ndxQDgovcvLZS3WfIGvpDmvFDbaOhZn+pfJ4fn1RtabX0L/+/3lTE27Xqv5tS71jEML51h3QGpvsn1nQFiAqg6+xiGpuXtFvJTr7bogFMDThu/FeQdWZ8ulapMyzHfzKU2O6f48714cA1wo9Bdh4uVP0TUqo17yNoWN9fRtJfx0"
      ],
      "alg": "RS256"
    }
  ]
}
👀 1
y
I already pasted my jwks in there
Or should i do it differently
a
yours is currently:
Copy code
{
  "keys": [
    {
      "e": "AQAB",
      "n": "nRmnPsDK49gtlYhnAq6pN6awGY7AcLyHK52GaHIhAmUiNI3dUpOg6vuMs5ZxPTWq5WD-5lu2KI72hHbV1XauoTMSnyepJXmRgaVCXj00lWbKrUcFfP0V3nF3RyzfDgBc3hY1JNkGVjH8v04slI8juyqhnYqKvHWy9CTzrW5988AZr56XwgnCx45y1TfKXo0hMKuHgvzN4yzXuSu5MlwIIGukw4d8NGby-m1z0aSdioJMBVc0rAQTefp_cDZJ9x5gU93NxxCMbtQUSerp7__1edEU0rqlSfxJr0z5Sjp66Tu6xm7VCFFS2puT3Fdwul-g1kD-asETY0eDHx_f14BdcQ",
      "kid": "key-1",
      "kty": "RSA"
    }
  ]
}
y
image.png
Ah
I should paste your thing
Now i should change the kid in my jwt aswell right\
I tried a jwt with both kid's but neiter of them work
is my jwt correcT? eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjRCOTVad3k3YW5sZ0d2YmZQUlVGZiJ9.eyJzdWIiOiJ5b3JyaWNrcmJAZ21haWwuY29tIiwidXNlcl9pZCI6IjhjZjFlYzE4LTE3MmYtNGZkNS04MmU1LWQ0YjNhYzdmYzZhZSIsImh0dHBzOi8vcGVybWl0LmlvL3RlbmFudCI6ImRlZmF1bHQiLCJodHRwczovL3Blcm1pdC5pby9lbnYiOiI0ZTllYjA2N2RkMTE0ZjUxOTUwODg2YTgyM2M3NmM0YiIsImlzcyI6Imh0dHBzOi8vZGVmYXVsdC5wZXJtaXQuaW8iLCJhdWQiOlsiaHR0cHM6Ly9kZWZhdWx0LnBlcm1pdC5pbyJdLCJpYXQiOjE3NTkyMzIxMDAsImV4cCI6MTc1OTIzNTcwMH0.TLOfdAhcO_4WepvdOsOt095bSeCnJligQBeAYsFLAp13RcrgWVrWOzys7MIA_gPExpfzVeLbLwCxKql5CQYhcigt-QQSKNhjwlnbaX3DSiBFr17s29gkDChQaOw3Onj97MjHpp8dr1SYdNpenAfnFY6cH5nKo0J9bg2Dwxg4h7D0jJrm4wHvngNYFGK4bo9dsjWpcUH3p6Rmi3B7qE9vF3WS3iJBAz1Lh2LN5ZhiaNQ0Aq2h7PpxM9Hz2wgKze-J1Pf3bkRHhrZvavIBmc7T1rAJjCPU6UgHc2Kf-bZE0XE2RHj2ZFxxa1lyt7Mg_QPjwe-CyPF4gqCSdcMj-wQqCA
a
yes - do you get "user not found"?
y
response is
Copy code
{
  "id": "cd412e3876f74c819dff54cef4d2e8a7",
  "title": "The request was invalid",
  "error_code": "INVALID_INPUT",
  "message": "We are sorry for the inconvenience, The JWT token could not be decoded, JWT ends with:QqCA. Please check the JWT token and try again.\nIf the issue keeps happening, contact our support on Slack for further guidance."
}
Looks same to me
Only jwt end is different cause i changed it because of the new jwks kid
a
is it look ok at jwt.io?
try with your jwks also
y
Dont think so
But im using a private.pem to make my jwt
But i dont know how u generated this jwk
cause it are 2
a
the issue is with the jwt and jwks you put. can i create an environment in your workspace to test it myself?
y
Yeah sure
a
thanks
y
JWKS:
Copy code
{
  "keys": [
    {
      "e": "AQAB",
      "n": "whtkYG3N8cFdj9NURXrGYnIlutaywFi_YYoQZdiU1yylG_qa0cI1m7hkbWAN2E2SevE2qXcyfJYaquckRiXEQgfL9VF4SDzzs5Zz6OlseVWjBBVXWEHm64TmBhr1zW7d8aB27dp4RcwWfrRUQ3onj4hA2Pp7Yo6wmkobRTMJEKe462DWWMT5Ta_AtTI1qONvOWe3iI_3rgiJ8VjuZvpPtsMtnWxLX_6vEqliwIw-RN6wmruQz1VGY-z1Bej5lVIwNRivqVxfXDviJXlGpxG-AqLOgpe1Ml4tlaCn7ciHlgR4CYKR72bKaJ9c--WLZyrVDtNJmwKm2JDZQkPNFXH7Sw",
      "alg": "RS256",
      "kid": "GoThkFRLnESuNS37R6vKM",
      "kty": "RSA",
      "use": "sig",
      "x5c": [
        "MIIDETCCAfmgAwIBAgIJIouz3DZAIjt5MA0GCSqGSIb3DQEBCwUAMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTAeFw0yMTEyMDUxMTA2MDlaFw0zNTA4MTQxMTA2MDlaMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIbZGBtzfHBXY/TVEV6xmJyJbrWssBYv2GKEGXYlNcspRv6mtHCNZu4ZG1gDdhNknrxNql3MnyWGqrnJEYlxEIHy/VReEg887OWc+jpbHlVowQVV1hB5uuE5gYa9c1u3fGgdu3aeEXMFn60VEN6J4+IQNj6e2KOsJpKG0UzCRCnuOtg1ljE+U2vwLUyNajjbzlnt4iP964IifFY7mb6T7bDLZ1sS1/+rxKpYsCMPkTesJq7kM9VRmPs9QXo+ZVSMDUYr6lcX1w74iV5RqcRvgKizoKXtTJeLZWgp+3Ih5YEeAmCke9mymifXPvli2cq1Q7TSZsCptiQ2UJDzRVx+0sCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU3g+/8HGoZCg4CSjB2ENQREbZsKowDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQAfs70lODKnjw3QR5OYaxasDDTzEml0ca89QAYPr8T/br9SXXNgQr1fOgMd6L0ZAB9QBtxsROsc2qtrlOLruEEFKmczNx03acor5otOpLMUPa3FE5WA+4uvwTpkqWT16hmtUxEyn/6am0Jaanz8tOVEYuBlycfmXcZk00jHOYmAxVumTmLrXnguhdSaJn9yLl9vy5/KHD49asiYE7hARYvTkkRHWWsCJOCzYb+8j6Soo7025EOYpRBPSMlo/GDpGVMLqdJlV1RX1VYY//6wIj7aReuSlNB0AqzZ45mFY3HI/EatNa0pJ6tkUP+xON9XTeLMZ9Ny6bc7M/vgSVMIulUP"
      ],
      "x5t": "gsVSPfe5kAUlgnQiO6wNX78I5IA"
    },
    {
      "e": "AQAB",
      "n": "2sOuaIKjrYJw4yAcnVjeDEcEZjzQTUlg8s2_vx6rq-L3UCPoEc1s_kHBpqw0ZyNcplngtlqVC9vYtL51oGI3I1EX6WzMzWQGShXfVNxzW2HlQSpRUwCXZKaVH4K9bhE7MXnuIjQRhrNAOxP3ot_u-JuXCAbjcZHitESAzRFIKglhi7m_wecut_Z5XXEKaGlAKTT65-ouw17hZ1v3T9BlDSpaw-o3ckd6tJ9icWV-D2jQlmqnxsH5n5TSekFocc5JqVR6zkS7WHqkE7nbGrDr85VgyZ453Y7LKRphLa-J2WvZ5wSaG15Yidb7ZnTAG88A3aSb9gs_G4Q0_ln1-xFh9Q",
      "alg": "RS256",
      "kid": "4B95Zwy7anlgGvbfPRUFf",
      "kty": "RSA",
      "use": "sig",
      "x5c": [
        "MIIDETCCAfmgAwIBAgIJLCV9bshilngoMA0GCSqGSIb3DQEBCwUAMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTAeFw0yMTEyMDUxMTA2MDlaFw0zNTA4MTQxMTA2MDlaMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANrDrmiCo62CcOMgHJ1Y3gxHBGY80E1JYPLNv78eq6vi91Aj6BHNbP5BwaasNGcjXKZZ4LZalQvb2LS+daBiNyNRF+lszM1kBkoV31Tcc1th5UEqUVMAl2SmlR+CvW4ROzF57iI0EYazQDsT96Lf7viblwgG43GR4rREgM0RSCoJYYu5v8HnLrf2eV1xCmhpQCk0+ufqLsNe4Wdb90/QZQ0qWsPqN3JHerSfYnFlfg9o0JZqp8bB+Z+U0npBaHHOSalUes5Eu1h6pBO52xqw6/OVYMmeOd2OyykaYS2vidlr2ecEmhteWInW+2Z0wBvPAN2km/YLPxuENP5Z9fsRYfUCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUeH45CveZIoUpbKvTsA861eXuYDUwDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQCIDoDCQ0uJuEVv3/kq6LzN14+OFH7oUF3FyAqGLyaH+TQtWu7fGb5yF7CDauSB6Y06OV1WALV4InImryib+B/dtdPm+J+SfuW4M4nFiu7w+tYzVnLr28qZNsIHYwa/z+Z9/9yn00t/CUlaZ8ExpTr8ab0YpIYT7M6ry8CmTns90ndxQDgovcvLZS3WfIGvpDmvFDbaOhZn+pfJ4fn1RtabX0L/+/3lTE27Xqv5tS71jEML51h3QGpvsn1nQFiAqg6+xiGpuXtFvJTr7bogFMDThu/FeQdWZ8ulapMyzHfzKU2O6f48714cA1wo9Bdh4uVP0TUqo17yNoWN9fRtJfx0"
      ],
      "x5t": "Co4yo_8w0TBa4jYh_8GiJ5oV9eY"
    }
  ]
}
login options:
Copy code
const loginOptions = {
            loginMethod: LoginMethod.frontendOnly,
            userJwt:
                'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjRCOTVad3k3YW5sZ0d2YmZQUlVGZiJ9.eyJzdWIiOiJ5b3JyaWNrcmJAZ21haWwuY29tIiwidXNlcl9pZCI6IjhjZjFlYzE4LTE3MmYtNGZkNS04MmU1LWQ0YjNhYzdmYzZhZSIsImh0dHBzOi8vcGVybWl0LmlvL3RlbmFudCI6ImRlZmF1bHQiLCJodHRwczovL3Blcm1pdC5pby9lbnYiOiI0ZTllYjA2N2RkMTE0ZjUxOTUwODg2YTgyM2M3NmM0YiIsImlzcyI6Imh0dHBzOi8vZGVmYXVsdC5wZXJtaXQuaW8iLCJhdWQiOlsiaHR0cHM6Ly9kZWZhdWx0LnBlcm1pdC5pbyJdLCJpYXQiOjE3NTkyMzIxMDAsImV4cCI6MTc1OTIzNTcwMH0.TLOfdAhcO_4WepvdOsOt095bSeCnJligQBeAYsFLAp13RcrgWVrWOzys7MIA_gPExpfzVeLbLwCxKql5CQYhcigt-QQSKNhjwlnbaX3DSiBFr17s29gkDChQaOw3Onj97MjHpp8dr1SYdNpenAfnFY6cH5nKo0J9bg2Dwxg4h7D0jJrm4wHvngNYFGK4bo9dsjWpcUH3p6Rmi3B7qE9vF3WS3iJBAz1Lh2LN5ZhiaNQ0Aq2h7PpxM9Hz2wgKze-J1Pf3bkRHhrZvavIBmc7T1rAJjCPU6UgHc2Kf-bZE0XE2RHj2ZFxxa1lyt7Mg_QPjwe-CyPF4gqCSdcMj-wQqCA',
            tenant: 'default',
            envId: '4e9eb067dd114f51950886a823c76c4b',
        };
a
your jwt and jwks are not valid
according to jwt.io
y
With my own jwks it was
Like i said i dont know how u generated this jwks
a
checked it on our workspace and it worked good, at yours it gets this error, please double check your jwt and jwks. it might be old or not updated
y
But i dont understand it anymore
U said i needed to change my jwks
message has been deleted
a
i thought it might be helped but its not, you need yours
to match your jwt
y
to this
Copy code
{
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "n": "whtkYG3N8cFdj9NURXrGYnIlutaywFi_YYoQZdiU1yylG_qa0cI1m7hkbWAN2E2SevE2qXcyfJYaquckRiXEQgfL9VF4SDzzs5Zz6OlseVWjBBVXWEHm64TmBhr1zW7d8aB27dp4RcwWfrRUQ3onj4hA2Pp7Yo6wmkobRTMJEKe462DWWMT5Ta_AtTI1qONvOWe3iI_3rgiJ8VjuZvpPtsMtnWxLX_6vEqliwIw-RN6wmruQz1VGY-z1Bej5lVIwNRivqVxfXDviJXlGpxG-AqLOgpe1Ml4tlaCn7ciHlgR4CYKR72bKaJ9c--WLZyrVDtNJmwKm2JDZQkPNFXH7Sw",
      "e": "AQAB",
      "kid": "GoThkFRLnESuNS37R6vKM",
      "x5t": "gsVSPfe5kAUlgnQiO6wNX78I5IA",
      "x5c": [
        "MIIDETCCAfmgAwIBAgIJIouz3DZAIjt5MA0GCSqGSIb3DQEBCwUAMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTAeFw0yMTEyMDUxMTA2MDlaFw0zNTA4MTQxMTA2MDlaMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIbZGBtzfHBXY/TVEV6xmJyJbrWssBYv2GKEGXYlNcspRv6mtHCNZu4ZG1gDdhNknrxNql3MnyWGqrnJEYlxEIHy/VReEg887OWc+jpbHlVowQVV1hB5uuE5gYa9c1u3fGgdu3aeEXMFn60VEN6J4+IQNj6e2KOsJpKG0UzCRCnuOtg1ljE+U2vwLUyNajjbzlnt4iP964IifFY7mb6T7bDLZ1sS1/+rxKpYsCMPkTesJq7kM9VRmPs9QXo+ZVSMDUYr6lcX1w74iV5RqcRvgKizoKXtTJeLZWgp+3Ih5YEeAmCke9mymifXPvli2cq1Q7TSZsCptiQ2UJDzRVx+0sCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU3g+/8HGoZCg4CSjB2ENQREbZsKowDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQAfs70lODKnjw3QR5OYaxasDDTzEml0ca89QAYPr8T/br9SXXNgQr1fOgMd6L0ZAB9QBtxsROsc2qtrlOLruEEFKmczNx03acor5otOpLMUPa3FE5WA+4uvwTpkqWT16hmtUxEyn/6am0Jaanz8tOVEYuBlycfmXcZk00jHOYmAxVumTmLrXnguhdSaJn9yLl9vy5/KHD49asiYE7hARYvTkkRHWWsCJOCzYb+8j6Soo7025EOYpRBPSMlo/GDpGVMLqdJlV1RX1VYY//6wIj7aReuSlNB0AqzZ45mFY3HI/EatNa0pJ6tkUP+xON9XTeLMZ9Ny6bc7M/vgSVMIulUP"
      ],
      "alg": "RS256"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "n": "2sOuaIKjrYJw4yAcnVjeDEcEZjzQTUlg8s2_vx6rq-L3UCPoEc1s_kHBpqw0ZyNcplngtlqVC9vYtL51oGI3I1EX6WzMzWQGShXfVNxzW2HlQSpRUwCXZKaVH4K9bhE7MXnuIjQRhrNAOxP3ot_u-JuXCAbjcZHitESAzRFIKglhi7m_wecut_Z5XXEKaGlAKTT65-ouw17hZ1v3T9BlDSpaw-o3ckd6tJ9icWV-D2jQlmqnxsH5n5TSekFocc5JqVR6zkS7WHqkE7nbGrDr85VgyZ453Y7LKRphLa-J2WvZ5wSaG15Yidb7ZnTAG88A3aSb9gs_G4Q0_ln1-xFh9Q",
      "e": "AQAB",
      "kid": "4B95Zwy7anlgGvbfPRUFf",
      "x5t": "Co4yo_8w0TBa4jYh_8GiJ5oV9eY",
      "x5c": [
        "MIIDETCCAfmgAwIBAgIJLCV9bshilngoMA0GCSqGSIb3DQEBCwUAMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTAeFw0yMTEyMDUxMTA2MDlaFw0zNTA4MTQxMTA2MDlaMCYxJDAiBgNVBAMTG3Byb2QtcGVybWl0LWlvLnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANrDrmiCo62CcOMgHJ1Y3gxHBGY80E1JYPLNv78eq6vi91Aj6BHNbP5BwaasNGcjXKZZ4LZalQvb2LS+daBiNyNRF+lszM1kBkoV31Tcc1th5UEqUVMAl2SmlR+CvW4ROzF57iI0EYazQDsT96Lf7viblwgG43GR4rREgM0RSCoJYYu5v8HnLrf2eV1xCmhpQCk0+ufqLsNe4Wdb90/QZQ0qWsPqN3JHerSfYnFlfg9o0JZqp8bB+Z+U0npBaHHOSalUes5Eu1h6pBO52xqw6/OVYMmeOd2OyykaYS2vidlr2ecEmhteWInW+2Z0wBvPAN2km/YLPxuENP5Z9fsRYfUCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUeH45CveZIoUpbKvTsA861eXuYDUwDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQCIDoDCQ0uJuEVv3/kq6LzN14+OFH7oUF3FyAqGLyaH+TQtWu7fGb5yF7CDauSB6Y06OV1WALV4InImryib+B/dtdPm+J+SfuW4M4nFiu7w+tYzVnLr28qZNsIHYwa/z+Z9/9yn00t/CUlaZ8ExpTr8ab0YpIYT7M6ry8CmTns90ndxQDgovcvLZS3WfIGvpDmvFDbaOhZn+pfJ4fn1RtabX0L/+/3lTE27Xqv5tS71jEML51h3QGpvsn1nQFiAqg6+xiGpuXtFvJTr7bogFMDThu/FeQdWZ8ulapMyzHfzKU2O6f48714cA1wo9Bdh4uVP0TUqo17yNoWN9fRtJfx0"
      ],
      "alg": "RS256"
    }
  ]
}
a
forget about it
y
ok
To make a jwk i need my pem key right
a
yes
y
i generated it at https://jwkset.com/generate
Copy code
{
  "kty": "RSA",
  "alg": "RS256",
  "kid": "09937378-fb8b-4c23-b418-e68d942ffec5",
  "n": "nRmnPsDK49gtlYhnAq6pN6awGY7AcLyHK52GaHIhAmUiNI3dUpOg6vuMs5ZxPTWq5WD-5lu2KI72hHbV1XauoTMSnyepJXmRgaVCXj00lWbKrUcFfP0V3nF3RyzfDgBc3hY1JNkGVjH8v04slI8juyqhnYqKvHWy9CTzrW5988AZr56XwgnCx45y1TfKXo0hMKuHgvzN4yzXuSu5MlwIIGukw4d8NGby-m1z0aSdioJMBVc0rAQTefp_cDZJ9x5gU93NxxCMbtQUSerp7__1edEU0rqlSfxJr0z5Sjp66Tu6xm7VCFFS2puT3Fdwul-g1kD-asETY0eDHx_f14BdcQ",
  "e": "AQAB"
}
with this jwt: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjA5OTM3Mzc4LWZiOGItNGMyMy1iNDE4LWU2OGQ5NDJmZmVjNSJ9.eyJzdWIiOiJ5b3JyaWNrcmJAZ21haWwuY29tIiwidXNlcl9pZCI6IjhjZjFlYzE4LTE3MmYtNGZkNS04MmU1LWQ0YjNhYzdmYzZhZSIsImh0dHBzOi8vcGVybWl0LmlvL3RlbmFudCI6ImRlZmF1bHQiLCJodHRwczovL3Blcm1pdC5pby9lbnYiOiI0ZTllYjA2N2RkMTE0ZjUxOTUwODg2YTgyM2M3NmM0YiIsImlzcyI6Imh0dHBzOi8vZGVmYXVsdC5wZXJtaXQuaW8iLCJhdWQiOlsiaHR0cHM6Ly9kZWZhdWx0LnBlcm1pdC5pbyJdLCJpYXQiOjE3NTkyMzY3NjcsImV4cCI6MTc1OTI0MDM2N30.aHfkZ8rDTFnSnRHoV8K4hLSXuK5Xgp25uOw9DBJ86pd4kjEEQ0SHFVaQh-8j5Grr-pZ8mJq7HVrS7miacxAaWbabLflwolSbxznvQzrSAhUrPfRSjPGUNC7fY91BLJzHGqw50Zd6crEzdaCsTRScYMxM5OLRc37fy1QiAlr_zV5nBCA6prTrZBteOsnATJxoSbPHE8wRUWYaWPKteBKT5zKHInDkBgSGv7stLFLpjb8FT-A70l0JPfRLCpLZJnQIIWJuRRB72FqG8teHgUcT6UG5I8XCgYcLTEhKJF4ftWwix1PEoYcoIKkt2USdEmcdi3PT83hIGPGlBWxTaOKP-w
image.png
still got issue
nextjs-dev | GET /_next/static/src/sendToken.ts 404 in 334ms nextjs-dev | GET /_next/static/src/elements.ts 404 in 345ms nextjs-dev | GET /_next/static/src/proxy.ts 404 in 359ms nextjs-dev | GET /_next/static/src/index.ts 404 in 517ms nextjs-dev | GET /_next/static/runtime.ts 404 in 147ms
t
Hey @Yorrick Elzinga, since you have Raz's example working and @Alon Boshi just set this up in his env and got it working, I think this is a matter of debugging on your end and not something you need Permit support for.
a
y
@Alon Boshi in what project u made it work for you?
a
on mine, build a new one to try it, the issue has to be in your jwt or jwks. not on Permit's side
y
in a next js app?
a
exactly like the example
y
example as in the demo app?
a
yes
y
what is the jwt u used
I am running the demo project now
When i change the jwks and private key
I am already getting a 400 error
Copy code
35c80cdb4bd4993abc5735ab72e3", title: "The request was invalid", error_code: "INVALID_INPUT",…}
error_code
: 
"INVALID_INPUT"
id
: 
"f70e35c80cdb4bd4993abc5735ab72e3"
message
: 
"We are sorry for the inconvenience, The JWT token could not be decoded, JWT ends with:kW6w. Please check the JWT token and try again.\nIf the issue keeps happening, contact our support on Slack for further guidance."
title
: 
"The request was invalid"
Maybe i should make a new private and public key and start from the beginning
How do you guys make keys
you can use an IdP like Auth0. or something like https://mkjwk.org/
y
Do i need private and public jwk in permit or just the public
t
the public. private is used to create the JWT
and then the public key is used to verify the signature that the private key signed with
y
I am sorry but i cant manage to get it working. Could some one run throuh with me setting up those key stuff, I know how to generate them but even when i generate new keys, jwk and using the demo app i cant get it to work
I am burning quite a lot of time on this topic. Feels like a small thing i am messing up but i cant figure it out. I am willing to use another login method but when i am looking into that its not very clear for me how i should setup my backend in other words what is needed for that. I read through the documentation but like i said its not clear for me what i have to setup.
o
Hi Yorrick, Thank you so much for the time and effort you’ve put into this so far — we truly appreciate your engagement. After a thorough review, we haven’t been able to identify any issues with the product itself, and we haven’t received similar reports from other customers. At this stage, any next steps may involve approaches that are more related to implementation or training rather than product troubleshooting. While we do our best to support users wherever possible, our support team’s primary focus is on resolving product-related issues. Given the time both you and our team have already invested, we now need to redirect our resources to other active cases. We fully understand if this experience has been frustrating and respect whatever decision you make regarding your continued use of our product. Please know that your feedback is important to us, and we’ll keep it in mind as we improve our services.
y
Where should i get help related tot implementation or training?
o
Each software developer’s journey is unique, as we don’t know you well enough I’d be hard pressed to suggest a path. We do not provide training or implementation guidance as part of our Community, Startup, or Pro tiers; Enterprise tier customers can acquire professional services which can be used for such goals.
y
All right i understand. Would it be possible to share the working variant using my environment and keys. Maybe when i have that i could manage to find the solution. @Alon Boshi do you possibly still have that?
o
Alon is OOO at the moment (it’s almost 1am for him) - I believe he’ll be able to reply tomorrow
y
Yeah no worries, bed time for me aswell
a
Hey @Yorrick Elzinga, Have you tried to do this process using login cookie ?
y
No i have not tried that, i was curious what private and public key you used and jwk for making it work
a
will send you in a moment 🙂
y
thnx
a
The JWKS i used is this and the JWT i took from my network tab -> Request Headers -> Authorization (but its temporary of course with short timestamp)
y
Ok thnx, Is there a docs page about how to generate private and public key? I have seen the page about jwks but there is documentation about a manual setup
Or is that not supported?
Yo, i fixed it using frontend only method. Issue was with the jwt payload
p
Hey, thanks for reaching out ! It seems our team is a little busy right now, a human will be with you within the next hour or so. In the meantime, can I help you ?
y
I didnt know the iis and aid claims were supposed to be {tenant}.permit.io urls
My feedback would be to put some more info about the jwt token into your documentation and maybe about how to make the keys for jwt signing
e
Hi @Yorrick Elzinga Glad you got it working! Thanks for the docs feedback, I’ll pass this along to the right team.