This is the documentation for the JWT Authentication Handshake. The steps for setting up the JWT Personalization Handshake are slightly different.
Implementation
1
Generate a private key
Go to your dashboard settings and generate a private key. Store this key somewhere secure where it can be accessed by your backend.
2
Create a login flow
Create a login flow that does the following:
- Authenticate the user
- Create a JWT containing the authenticated user’s info in the User format
- Sign the JWT with the secret key, using the EdDSA algorithm
- Create a redirect URL back to the
/login/jwt-callback
path of your docs, including the JWT as the hash
3
Configure your Authentication settings
Return to your dashboard settings and add the login URL to your Authentication settings.
Example
I want to set up authentication for my docs hosted atdocs.foo.com
. I want my docs
to be completely separate from my dashboard (or I don’t have a dashboard at all).
To set up authentication with Mintlify, I go to my Mintlify dashboard and generate a
JWT secret. I create a web URL https://foo.com/docs-login
that initiates a login flow
for my users. At the end of this login flow, once I have verified the identity of the user,
I create a JWT containing the user’s custom data according to Mintlify’s specification.
I use a JWT library to sign this JWT with my Mintlify secret, create a redirect URL of the
form https://docs.foo.com/login/jwt-callback#{SIGNED_JWT}
, and redirect the user.
I then go to the dashboard settings and enter https://foo.com/docs-login
for the
Login URL field.
Here’s what the code might look like:
Redirecting Unauthenticated Users
When an unauthenticated user tries to access a specific page, Mintlify preserves their intended destination through a redirect flow:-
The user attempts to visit a certain page (e.g.,
/quickstart
) -
Mintlify redirects them to your login URL and adds the (relative) original destination as a
redirect
query parameter
-
Original request:
https://docs.foo.com/quickstart
-
Redirect to login:
https://foo.com/docs-login?redirect=%2Fquickstart
redirect
parameter in your JWT callback URL to send users to their intended destination:
https://docs.foo.com/login/jwt-callback?redirect=%2Fquickstart#{SIGNED_JWT}