Integration Guide
This guide shows you how to integrate AuthRocket with your app by using LoginRocket.
Using Node.js, PHP, or Ruby? We have specific guides just for those. See the menu to the leftabove.
You need to have already created a Realm for your app. If that’s not done yet, do that now or see Your first realm.
Get your LoginRocket credentials
In the AuthRocket management portal, go to Realm -> Integration -> Using LoginRocket, and then select Other (Backend).
Use the JWT key for verifying login tokens.
Use the LoginRocket URL for redirecting users to LoginRocket so they can login, signup, manage their profile, etc.
Both of these are discussed more below.
Login tokens
LoginRocket will send login tokens to your app using the parameter ?token=[the-token]
. These tokens need to be decoded and verified.
AuthRocket’s tokens are signed JWTs (aka JWS tokens). The embedded data (‘claims’ in JWT terminology) are OpenID Connect compatible.
You may use any JWT library available for your language to process these tokens. AuthRocket uses RS256 signatures by default, which should be near universally supported.
Hint Be sure your chosen JWT library checks for token expiration. If it doesn’t, you’ll end up with login tokens that effectively never expire! Our list of JWT libraries all perform the proper checks.
Here’s some pseudo-code showing how to verify and use AuthRocket’s login tokens:
## /login page
# store the token in a session/cookie for use on each page
token = request.get_param('token')
if (token) {
session['token'] = token
}
redirect user to main page
## on each page requiring user to be logged in
# your JWT key could be stored in an environment variable, in Vault,
# or in a constant set during your app's initialization process
jwt_key = "...YOUR_KEY_HERE..."
# decode & verify the token
jwt = JwtLibrary.verify_jwt(session['token'], jwt_key, algorithm: 'RS256')
# if invalid, assuming returns null
# some libraries may throw an exception instead
if (jwt) {
# good to go!
# proceed with processing this page
# jwt includes User, Membership, and Org data:
user_id = jwt['sub']
first_name = jwt['given_name']
email = jwt['email']
account_id = jwt['orgs'][0]['oid']
account_name = jwt['orgs'][0]['name']
permissions = jwt['orgs'][0]['perm']
} else {
# token invalid or expired
session['token'] = null
redirect user back to LoginRocket
}
Instead of storing the full JWT token in the session or a cookie, you could also extract specific fields from the JWT and store just those in your session.
## /login page
token = request.get_param('token')
jwt_key = "...YOUR_KEY_HERE..."
jwt = JwtLibrary.decode_and_verify_jwt(token, jwt_key, algorithm: 'RS256')
if (jwt) {
# setup the user's session
session['user_id'] = jwt['sub']
session['first_name'] = jwt['given_name']
session['account_id'] = jwt['orgs'][0]['oid']
session['account_name'] = jwt['orgs'][0]['name']
# good to go!
redirect user to logged-in area
} else {
# something failed
redirect user back to LoginRocket
}
See JWT Token Format for details on all the fields available in AuthRocket’s JWTs. There’s also a list of JWT libraries for many languages.
Default Login URL
When a user successfully performs a login or signup (or returns to your app after managing their profile or account), they are redirected back to your app.
By default, users are redirected back to the Default Login URL which can be configured at Realm -> Settings -> Connected Apps.
If users should always arrive at your app (post-login) at the same URL (eg: /login
or /manage
), the Default Login URL is all you need to configure.
If you want users to be able to arrive at multiple URLs, you’ll want to use LoginRocket’s redirect_uri
param.
LoginRocket URLs / redirects
LoginRocket supports a number of URLs for getting back and forth to your app.
At the very least, you’ll likely want to redirect to LoginRocket upon any not-logged-in scenario. You may also want to add links for Signup, Manage Profile, etc.
See LoginRocket URLs and parameters for details.
What’s next
After getting a basic integration, you may want to enable social login, 2FA, email verification, or other features. The good news is no extra code is required—nearly everything is configured directly within AuthRocket.
If you’re stuck, let us know how we can help.