Simple CAS Client for CAS 2.0 and 3.0 protocol

Downloads in past


741.1.0a year ago3 years agoMinified + gzip package size for react-cas-client in KB


NPM GitHub Test Coverage Status GitHub license
React CAS Client
react-cas-client is a simple CAS Client for ReactJS for Apereo CAS server (CAS 2.0 and 3.0 protocol)


Install with npm

npm install react-cas-client

Install with yarn

yarn add react-cas-client


Example: alancting/react-cas-client-example

Initialize CAS Client

import CasClient, { constant } from "react-cas-client";

let casEndpoint = "";
let casOptions = { version: constant.CAS_VERSION_2_0 };

let casClient = new CasClient(casEndpoint, casOptions);

CAS Endpoint

Endpoint of CAS Server (eg. '')

CAS Options

  • path - CAS server service path (eg. '/cas-tmp') (default: '/cas')
  • protocol - CAS server protocol, can be 'http', 'https' (default: 'https');
  • version - CAS protocol version can be constant.CAS_VERSION_2_0, constant.CAS_VERSION_3_0 (default: constant.CAS_VERSION_3_0)
  • proxy_callback_url - URL of the proxy callback (pgtUrl)
  • validation_proxy - Enable validation proxy (boolean) (default: false)
  • Only Apply When validation_proxy = true
- validation_proxy_protocol - Validation proxy server protocol ('http'/'https') (default: current url protocol) - validation_proxy_endpoint - Validation proxy server endpoint (default: current endpoint) - validation_proxy_path - Proxy path for application to make call to CAS server to validate ticket (default: '')

Start authorization flow (Login)

// Basic usage
  .then(successRes => {
    // Login user in state / locationStorage ()
    // eg. loginUser(response.user);

    // If proxy_callback_url is set, handle pgtpgtIou with Proxy Application

    // Update current path to trim any extra params in url
    // eg. this.props.history.replace(response.currentPath);
  .catch(errorRes => {
    // Error handling
    // displayErrorByType(errorRes.type)

    // Update current path to trim any extra params in url
    // eg. this.props.history.replace(response.currentPath);

// Login with gateway
let gateway = true;

  .then(successRes => {})
  .catch(errorRes => {});


Apply gateway param to CAS login url when gateway is given (Documentation)
  • Boolean: true / false (default: false)

Possible Error Types

  • constant.CAS_ERROR_FETCH - Error when validating ticket with CAS Server:
  • constant.CAS_ERROR_PARSE_RESPONSE - Cannot parse response from CAS server
  • constant.CAS_ERROR_AUTH_ERROR - User is not authorized

Logout CAS

// Assume current url is

// Basic usage

// Apply redirect url to CAS logout url
// You can applied redirectPath.
// In this case, will be applied to logout url
let redirectPath = "/logout";

Redirect Path

Apply redirect url to CAS logout url when refirectPath is given (Documentation)
  • String: any path (default: /)

CORS Issue

Option 1

Update CAS server to set Access-Control-Allow-Origin for you application

Option 2

Using reverse proxy in your application, we will use ngnix as example.
  1. Update nginx conf to pass request from */cas_proxy to your cas server -

# nginx.conf

location /cas_proxy {

  1. Apply CAS options - validation_proxy_path to '/cas_proxy'


Test with npm

npm run test

Test with yarn

yarn run test


MIT license