OpenConnect wrapper with Azure AD (SAML) SSO support for Cisco SSL-VPNs
Project description
openconnect-saml
OpenConnect wrapper with Azure AD / SAML SSO support for Cisco AnyConnect VPNs.
Drives the SAML/SSO authentication flow against Cisco AnyConnect
gateways and hands the resulting cookie to openconnect. Supports
Azure AD, ADFS, and most enterprise IdPs out of the box; works with
Yubikey / Nitrokey hardware keys, Duo, Microsoft Authenticator, and
TOTP from your password manager.
Maintained fork of vlaci/openconnect-sso,
combining work from kowyo/openconnect-lite.
Install
pip install "openconnect-saml[gui]" # Qt browser
pip install "openconnect-saml[chrome]" # Chromium / Playwright
pip install openconnect-saml # Headless only
Arch: yay -S openconnect-saml. Requires Python ≥ 3.10 and
openconnect in $PATH. See
docs/installation.md for Docker, build
from source, and system-deps per distro.
Quick start
# Interactive setup — server, username, TOTP, browser, auto-reconnect
openconnect-saml setup
# Connect to a saved profile
openconnect-saml connect work
# Or one-shot, no profile
openconnect-saml --server vpn.example.com --user user@example.com
Headless (servers, containers, CI):
openconnect-saml --server vpn.example.com --headless --user user@example.com
Features
- Three browser backends — Qt6 WebEngine, Chromium via Playwright, or full headless. Hardware-key WebAuthn works in all three. See docs/browsers.md.
- Five TOTP providers — local keyring, 2FAuth,
Bitwarden, 1Password, pass — or
--no-totpto skip the prompt. See docs/authentication.md. - Multi-profile — save / list / rename / export / import named
VPN configs. Includes export to NetworkManager's
.nmconnectionformat for the Ubuntu / GNOME VPN UI. See docs/profiles.md. - Auto-reconnect with exponential back-off, optional cap.
operations.md - Kill-switch — iptables-based, session or persistent, with
DNS / LAN allow-listing.
networking.md - systemd integration — install a per-server unit;
service start/stop/status/logs.operations.md - Connection history & stats — JSONL audit log, aggregated
summaries (
history stats), JSON output for monitoring.operations.md - Diagnostics —
doctorchecks Python / openconnect / sudo / TUN / dependencies / keyring / DNS / TLS / SAML endpoint.diagnostics.md
Documentation
The docs/ directory has a topic-per-file reference. Start with docs/README.md for the index.
| Topic | Where |
|---|---|
| Installation, Docker, system deps | docs/installation.md |
| Browser backends + minimal GUI | docs/browsers.md |
| TOTP providers + FIDO2 + credentials | docs/authentication.md |
| Profiles + NetworkManager export | docs/profiles.md |
| Split-tunnel + kill-switch + proxy | docs/networking.md |
| Reconnect, systemd, status, history | docs/operations.md |
Config file + setup + config subcommand |
docs/configuration.md |
doctor, troubleshooting, exit codes |
docs/diagnostics.md |
| Full CLI reference (every flag) | docs/cli-reference.md |
| Contributor setup + release flow | docs/development.md |
Migrating from openconnect-sso |
docs/migration.md |
Links
| Resource | URL |
|---|---|
| PyPI | https://pypi.org/project/openconnect-saml/ |
| AUR | https://aur.archlinux.org/packages/openconnect-saml |
| Releases | https://github.com/mschabhuettl/openconnect-saml/releases |
| Issues | https://github.com/mschabhuettl/openconnect-saml/issues |
| Changelog | CHANGELOG.md |
| License | GPL-3.0 |
Credits
- László Vaskó (vlaci) — original
openconnect-sso - Kowyo —
openconnect-litemodernization - Community contributors for issues, PRs, and testing
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openconnect_saml-0.13.0.tar.gz.
File metadata
- Download URL: openconnect_saml-0.13.0.tar.gz
- Upload date:
- Size: 165.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c029c3eb1e25ab25f3717455366b3d834f760cc2a21fc9dad4444ec4cce9849
|
|
| MD5 |
6efe0292496e89a7a81a84b4e2b77b8d
|
|
| BLAKE2b-256 |
417c8a362c03077a46edf3d2996ec1c955e2fe8cd7c1053e41c93171913cb5d2
|
Provenance
The following attestation bundles were made for openconnect_saml-0.13.0.tar.gz:
Publisher:
publish.yml on mschabhuettl/openconnect-saml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openconnect_saml-0.13.0.tar.gz -
Subject digest:
4c029c3eb1e25ab25f3717455366b3d834f760cc2a21fc9dad4444ec4cce9849 - Sigstore transparency entry: 1409168242
- Sigstore integration time:
-
Permalink:
mschabhuettl/openconnect-saml@6e24d0bbf68813be04f1c010fb05e03e90fe2ce6 -
Branch / Tag:
refs/tags/v0.13.0 - Owner: https://github.com/mschabhuettl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6e24d0bbf68813be04f1c010fb05e03e90fe2ce6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file openconnect_saml-0.13.0-py3-none-any.whl.
File metadata
- Download URL: openconnect_saml-0.13.0-py3-none-any.whl
- Upload date:
- Size: 111.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b473e0f979cd0ce3d04cf045260bcba9feb89f5d060f2dd58a662b08f200f5d
|
|
| MD5 |
088b93bb9b364216c65d237142543526
|
|
| BLAKE2b-256 |
5095c5ec2db2484a76d050b4c64fafff1436dc8101ba03168897d8a98b771c3b
|
Provenance
The following attestation bundles were made for openconnect_saml-0.13.0-py3-none-any.whl:
Publisher:
publish.yml on mschabhuettl/openconnect-saml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openconnect_saml-0.13.0-py3-none-any.whl -
Subject digest:
4b473e0f979cd0ce3d04cf045260bcba9feb89f5d060f2dd58a662b08f200f5d - Sigstore transparency entry: 1409168248
- Sigstore integration time:
-
Permalink:
mschabhuettl/openconnect-saml@6e24d0bbf68813be04f1c010fb05e03e90fe2ce6 -
Branch / Tag:
refs/tags/v0.13.0 - Owner: https://github.com/mschabhuettl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6e24d0bbf68813be04f1c010fb05e03e90fe2ce6 -
Trigger Event:
push
-
Statement type: