# CAS - Synapse

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# How to test CAS as a developer without a server

The django-mama-cas project is an easy to run CAS implementation built on top of Django.

## Prerequisites

1. Create a new virtualenv: `python3 -m venv <your virtualenv>`
2. Activate your virtualenv: `source /path/to/your/virtualenv/bin/activate`
3. Install Django and django-mama-cas:

       python -m pip install "django<3" "django-mama-cas==2.4.0"

4. Create a Django project in the current directory:

       django-admin startproject cas_test .

5. Follow the install directions for django-mama-cas
6. Setup the SQLite database: `python manage.py migrate`
7. Create a user:

       python manage.py createsuperuser

   1. Use whatever you want as the username and password.
   2. Leave the other fields blank.
8. Use the built-in Django test server to serve the CAS endpoints on port 8000:

       python manage.py runserver

You should now have a Django project configured to serve CAS authentication with a single user created.

## Configure Synapse (and Element) to use CAS

1. Modify your `homeserver.yaml` to enable CAS and point it to your locally running Django test server:

       cas_config:
         enabled: true
         server_url: "http://localhost:8000"
         service_url: "http://localhost:8081"
         #displayname_attribute: name
         #required_attributes:
         #    name: value

2. Restart Synapse.

Note that the above configuration assumes the homeserver is running on port 8081 and that the CAS server is on port 8000, both on localhost.

## Testing the configuration

Then in Element:

1. Visit the login page with a Element pointing at your homeserver.
2. Click the Single Sign-On button.
3. Login using the credentials created with `createsuperuser`.
4. You should be logged in.

If you want to repeat this process you’ll need to manually logout first:

1. http://localhost:8000/admin/
2. Click “logout” in the top right.