Skip to main content

cas-simulation

A way to simulate a web browser visiting a service authenticated by CAS and proceeding through the authentication.

Originally developed to facilitate authenticated service checks in Nagios.

check_cas_sp

cas_simulation object instances are created using the included check_cas_sp script, intended to be called from Nagios

The simulation will follow redirects from a starting URL (typically a service provider like https://myportal.example.edu) until it reaches a form that it believes is a CAS authentication page (at least the one presented by the JASIG/Apereo implementation). It will then submit the form using the credentials provided. It will follow redirects and submit forms (e.g. "Click here to continue" javascript alternatives) until it receives a 200 OK page without a form, or the form contains an id or action attribute matching argument provided to the --form.

The final landing page is searched for an expected pattern using --expression. If it matches, the script returns 0 which corresponds to a OK in Nagios API. Otherwise it returns 2 for CRITICAL

Optionally, the check_cas_sp will also fetch and check an expression against a URL that is only expected to be available after authentication. This would simulate clicking a link on a portal after logging in.

Gotchas

Notably, the --verbose option stupidly assumes it can write to /var/log/nagios

Examples

check_cas_sp --help

List all current command line options

check_cas_sp \
    --url https://fee-portal.csusb.edu/auth/shibboleth" \
    --expression "Fines .{1,30}for Joe Coyote" \
    -w 5.0 \
    --post-auth-check https://fee-portal.csusb.edu/fines/alma "Balance [Dd]ue" \
    --credentials "/etc/cas/joe-creds.json" \

Authenticate fee-portal.csusb.edu using the credentials in /etc/cas/joe-creds.json. The post authentication redirect contains "Fines and fees for Joe Coyote" and should match the regular expression given.

After that check, also check a url that requires an authenticated active session. In this case, a check for the Alma library fees that should contain the text "Balance Due". Return WARNING if the authentication takes more than 5 seconds. (It probably should be --post-auth-url and --post-auth-expression instead of being combined like it is.)

check_cas_sp \
    --url https://my.csusb.edu \
    --expression 'Signed in as Joe Coyote<div .{1,30}>Tap to sign out' \
    -w 10 \
    --form '/default/kurogo_module_search/search' \
    --credentials credentails.json

Authenticate to my.csusb.edu and expect a name next to a "Tap to sign out" after authentication. Do not proceed past the form with the name or id of '/default/kurogo_module_search/search' Typically, the simulation will submit any forms it encounters, assuming they are "Click here to continue" type forms)

Examples Nagios command objects

define command {
        command_name    check-cas-sp
        command_line    /opt/virtualenv/cas-simulation/bin/check_cas_sp --url '$ARG1$' --expression '$ARG2$' $ARG3$ --verbose --credentials /etc/nagios/secrets/credentials.json
}
define command {
        command_name    check-cas-sp-post-auth
        command_line    /opt/virtualenv/cas-simulation/bin/check_cas_sp --url '$ARG1$' --expresison '$ARG2$' $ARG3$ --post-auth-check '$ARG4$' '$ARG5$' --verbose --credentials /etc/nagios/secrets/credentials.json
}

Release files for cas-simulation 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cas-simulation 1.1.1
File Size Uploaded
cas-simulation-1.1.1.tar.gz 6.1 kB Details

Release files / cas-simulation-1.1.1.tar.gz

Download URL cas-simulation-1.1.1.tar.gz
Size 6.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f819b21884cd54bdd04280039fa60cb51a3e45c030ce9fcad022698595a1252e
BLAKE2b-256 checksum
How to use checksums
6e85aa2ae8ed3a817ac2f49554c49c01c0e33c737eb2083783dfbd6773f5a413
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.5.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/2.7.15

Release history Release notifications | RSS feed

This release

1.1.1 This release

1 release file

1.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page