Integration Guide

Node.js / Express

Complete guide for integrating Node.js applications with CAS SSO

3 min setup Easy Node 18+

1. Installation

Terminal
npm install @cas-system/node-client jsonwebtoken axios

2. Configuration

.env
CAS_SERVER_URL=https://your-cas-server.com
CAS_CLIENT_ID=your_client_id
CAS_CLIENT_SECRET=your_client_secret
CAS_CALLBACK_URL=https://your-app.com/cas/callback
config/cas.js
module.exports = {
  serverUrl:    process.env.CAS_SERVER_URL,
  clientId:     process.env.CAS_CLIENT_ID,
  clientSecret: process.env.CAS_CLIENT_SECRET,
  callbackUrl:  process.env.CAS_CALLBACK_URL,
};

3. Express Middleware

middleware/cas-auth.js
const axios = require('axios');
const config = require('../config/cas');

async function casAuth(req, res, next) {
  const token = req.headers.authorization?.split(' ')[1];

  if (!token) {
    return res.status(401).json({ error: 'Token required' });
  }

  try {
    const { data } = await axios.post(
      `${config.serverUrl}/api/sso/validate`,
      { token, client_id: config.clientId, client_secret: config.clientSecret }
    );

    req.user = data.user;
    next();
  } catch (err) {
    res.status(401).json({ error: 'Invalid token' });
  }
}

module.exports = casAuth;

4. Route Protection

routes/api.js
const express  = require('express');
const casAuth  = require('../middleware/cas-auth');
const router   = express.Router();

router.get('/dashboard', casAuth, (req, res) => {
  res.json({ message: 'Welcome', user: req.user });
});

router.get('/profile', casAuth, (req, res) => {
  res.json(req.user);
});

module.exports = router;
Done! Add casAuth middleware to any route that requires SSO authentication.

Next Steps