SSX
  • SSX
  • ⚡SSX Quickstart
    • SSX Server Quickstart
  • 🛠️Configuring SSX
    • Configuring SSX Server
    • Configuring SSX with React
    • Configuring SSX for Serverless
  • 📊Accessing the SSX Dashboard
  • 📈Scaling SSX Server
  • Tutorials
    • Moving From SIWE to SSX
    • Using SSX with Auth.js
    • Using SSX with NextAuth
    • Build a Token-Gated Dapp
    • From Email Login to SIWE
  • appendix
    • DAO Login Workflow
    • SSX: How It Works
  • Reference
    • SSX API Reference
      • configoverrides
      • extrafields
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • issxconnected
        • afterconnecthookspromise
        • aftersignin
        • api
        • applyextensions
        • builder
        • config
        • extensions
        • isextensionenabled
        • provider
        • signin
        • signout
        • ssxserverlogin
        • ssxservernonce
      • siweconfig
      • ssx
        • constructor
        • address
        • chainid
        • connection
        • resolveens
        • rpcproviders
        • session
        • signin
        • signout
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxclientconfig
        • enabledaologin
        • providers
        • resolveens
        • siweconfig
      • ssxclientproviders
        • rpc
        • server
        • web3
      • ssxclientsession
      • ssxcloudflareprovider
      • ssxconfig
        • enabledaologin
        • providers
        • resolveens
        • siweconfig
      • ssxconnected
        • constructor
        • afterconnecthookspromise
        • aftersignin
        • api
        • applyextensions
        • builder
        • config
        • extensions
        • isextensionenabled
        • provider
        • signin
        • signout
        • ssxserverlogin
        • ssxservernonce
      • ssxcustomprovider
      • ssxensconfig
        • resolve
        • resolveonserver
      • ssxensdata
        • avatarurl
        • domain
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxextension
        • afterconnect
        • aftersignin
        • defaultactions
        • extrafields
        • namespace
        • targetedactions
      • ssxgenericprovider
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxinit
        • constructor
        • connect
        • extend
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxproviders
        • rpc
        • server
        • web3
      • ssxproviderserver
      • ssxproviderweb3
        • driver
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserverhost
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsession
    • SSX Core API Reference
      • configoverrides
      • extrafields
      • getprovider
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • issxconnected
        • afterconnecthookspromise
        • aftersignin
        • api
        • applyextensions
        • builder
        • config
        • extensions
        • isextensionenabled
        • provider
        • signin
        • signout
        • ssxserverlogin
        • ssxservernonce
      • siweconfig
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxclientconfig
        • enabledaologin
        • providers
        • resolveens
        • siweconfig
      • ssxclientproviders
        • rpc
        • server
        • web3
      • ssxclientsession
      • ssxcloudflareprovider
      • ssxcookieoptions
        • httponly
        • samesite
        • secure
        • signed
      • ssxcustomprovider
      • ssxensconfig
        • resolve
        • resolveonserver
      • ssxensdata
        • avatarurl
        • domain
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxeventlogtypes
      • ssxexpresssessionstoreprovider
      • ssxextension
        • afterconnect
        • aftersignin
        • defaultactions
        • extrafields
        • namespace
        • targetedactions
      • ssxgenericprovider
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxlog
      • ssxlogfields
        • content
        • timestamp
        • type
        • userid
      • ssxmetricsprovider
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxpost
      • ssxproviderserver
      • ssxproviderweb3
        • driver
      • ssxredissessionstoreprovider
      • ssxresolveens
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserverconfig
        • providers
        • signingkey
        • usesecurecookies
      • ssxserverhost
      • ssxserverproviders
        • metrics
        • rpc
        • sessionconfig
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsessionstoreconfig
        • sessionoptions
        • store
    • SSX Server API Reference
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxauthenticated
      • ssxcloudflareprovider
      • ssxcookieoptions
        • httponly
        • samesite
        • secure
        • signed
      • ssxcustomprovider
      • ssxensdata
        • avatarurl
        • domain
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxeventlogtypes
      • ssxexpressmiddleware
      • ssxexpresssessionstoreprovider
      • ssxgenericprovider
      • ssxhttpmiddleware
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxlogfields
        • content
        • timestamp
        • type
        • userid
      • ssxmetricsprovider
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxredissessionstoreprovider
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserver
        • constructor
        • generatenonce
        • getexpresssessionconfig
        • log
        • login
        • logout
        • provider
        • resolveens
        • session
      • ssxserverconfig
        • providers
        • signingkey
        • usesecurecookies
      • ssxserverproviders
        • metrics
        • rpc
        • sessionconfig
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsessionstoreconfig
        • sessionoptions
        • store
    • SSX Serverless API Reference
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxcloudflareprovider
      • ssxcustomprovider
      • ssxensdata
        • ensavatarurl
        • ensname
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxeventlogtypes
      • ssxgenericprovider
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxlogfields
        • content
        • timestamp
        • type
        • userid
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserver
        • constructor
        • generatenonce
        • getnonce
        • log
        • me
        • provider
        • resolveens
        • session
        • signin
        • signout
      • ssxserverconfig
        • daologin
        • providers
      • ssxserverproviders
        • metrics
        • rpc
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsessioncrudconfig
        • create
        • delete
        • retrieve
        • update
      • ssxsessiondata
        • daologin
        • ens
        • signature
        • siwemessage
Powered by GitBook
On this page
  • Overview
  • Creating a Basic Express.js Server

Was this helpful?

Edit on GitHub
  1. SSX Quickstart

SSX Server Quickstart

This guide will help you quickly create an SSX Server powered by Express.js

PreviousSSX QuickstartNextConfiguring SSX

Last updated 2 years ago

Was this helpful?

Overview

SSX Server enables you to have sessions for each user, ensure that generated nonces belong to the same session, provide validation when requests are made, and more.

We have a few examples to get you up and running, including a lightweight Express.js example .

Creating a Basic Express.js Server

Start by creating a new JavaScript project and running init with your preferred package manager. In this guide, we'll be using yarn:

yarn init

After that, go into your new project folder and do the following:

  • Create a folder called src/ (if on a UNIX-based OS run mkdir src)

  • Create a file under src/ called index.ts and add the following:

/* src/index.ts */

import express from 'express';
import dotenv from 'dotenv';
import cors from 'cors';

dotenv.config();
const PORT = process.env.PORT || '4000';

const app = express();

app.use(cors({ credentials: true, origin: true }));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

app.get('/', (_req, res) => {
  res.send('SSX Server Online\n');
});

app.listen(PORT, () => {
  console.log(`⚡️[server]: Server is running at http://localhost:${PORT}`);
});

To run this and prepare it to work with ssx run the following commands to install some dependencies:

  • yarn add -D typescript @types/cors @types/node @types/express ts-node

  • yarn add @spruceid/ssx-server express cors dotenv

Head to your package.json located at the root of your project and add the following:

...
  "license": "MIT",
+ "scripts": {
+   "start": "ts-node src/index"
+ },
  "devDependencies": {
...

You can now run yarn start and have a fully functional express server. To test it, run curl localhost:4000 at your terminal, that should output: UP.

Now that you have the basic setup, adding ssx can be done with just one extra step, head to src/index.ts and add the following:

/* src/index.ts */

import express from 'express';
import dotenv from 'dotenv';
+ import { SSXServer, SSXExpressMiddleware } from '@spruceid/ssx-server';
import cors from 'cors';

dotenv.config();
const app = express();

+ const ssx = new SSXServer({
+   signingKey: process.env.SSX_SECRET,
+ });

const PORT = process.env.PORT || '4000';

app.use(cors({ credentials: true, origin: true }));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
+ app.use(SSXExpressMiddleware(ssx));

app.get('/', (_req, res) => {
  res.send('SSX Server Online\n');
});

app.listen(PORT, () => {
  console.log(`⚡️[server]: Server is running at http://localhost:${PORT}`);
});

The creation of a configuration file will also be necessary. To do that, create in the project's root folder a file named .env , and in that file, add the following:

SSX_SECRET=

Make sure to change that value to avoid using any default value.

And that's it! You can stop the server (if you were still running it) and re-launch it.

If you want to test it, you can also run the following command in your terminal to get a 16-character long nonce: curl localhost:4000/ssx-nonce

Now you have a SSX Server powered by Express.js. To test it, you can run any of the examples available in and link to this API.

⚡
the ssx monorepo
here
ssx/examples/ssx-quickstart-express at main · spruceid/ssxGitHub
Logo