Versatile identity management server
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Frédéric Péters d511b5ab60
gitea/authentic/pipeline/head This commit looks good Details
a11y: remove erroneous <p> around registration form (#78109)
3 days ago
data [saml2] add a default certificate and aSAML_SIGNING_KEY setting 13 years ago
debian debian: apply new pre-commit-debian (#77727) 1 week ago
source Initial packaging 4 years ago
src a11y: remove erroneous <p> around registration form (#78109) 3 days ago
tests tests: add check on behaviour of OICDClient's clean (#77452) 5 days ago
tests_rbac tests: move test_rbac to main tests (#58696) 8 months ago
.coveragerc .coveragerc: fix omit paths 8 years ago
.git-blame-ignore-revs misc: update git-blame-ignore-revs (#75442) 3 months ago
.gitignore misc: use scss for all css files (#62936) 1 year ago
.gitmodules manager: add gadjo as a submodule (refs #5180) 9 years ago
.pre-commit-config.yaml ci: upgrade pre-commit-debian (#77727) 1 week ago
AUTHORS.txt AUTHORS: update 10 years ago
COPYING remove authentic2_idp_openid (fixes #23515) 5 years ago
Jenkinsfile Prepare Jenkinsfile for Gitea migration (#74572) 3 months ago add missing auth_fc txt templates (#71695) 6 months ago
NEWS Prepare release 2.1.13 8 years ago
README misc: change django-upgrade target version to 3.2 (#75442) 3 months ago misc: rename authentic2-ctl to (#70162) 8 months ago misc: make non verbose 8 months ago remove authentic2_idp_openid (fixes #23515) 5 years ago misc: rename authentic2-ctl to (#70162) 8 months ago misc: apply pyupgrade (#55519) 2 years ago
pylint.rc pylint.rc: ignore use-dict-literal (R1735) error (#74065) 4 months ago ci: speed up CI using multiple processes with pylint (#42144) 11 months ago misc: require django 3.2 (#75442) 3 months ago
tox.ini tox: remove deprecated targets (#75439) 3 months ago use tox in 2 years ago


Authentic 2 - Versatile Identity Server

Authentic 2 is a versatile identity management server aiming to address a
broad range of needs, from simple to complex setups; it has support for many
protocols and can bridge between them.

Authentic 2 supports many protocols and standards, including SAML2, CAS,
LDAP, X509 and OAUTH2.

Authentic 2 is under the GNU AGPL version 3 licence.

It has support for SAMLv2 thanks to `Lasso <>`_,
a free (GNU GPL) implementation of the Liberty Alliance and OASIS
specifications of SAML2.

Authentic 2 requires Python 2.7 and Django 1.7.

Full documentation available on,
maintained in a distinct repository


* SAML 2.0 Identity and service provider
* Server CAS 1.0 and 2.0 using a plugin
* Standards authentication mechanisms:

    * Login/password through internal directory or LDAP
    * X509 certificate over SSL/TLS

* Protocol proxying
* Support of LDAP v2 and v3 directories
* Support of the PAM backend
* One-time password (OATH and Google-Authenticator) using a plugin
* Identity attribute management
* Plugin system


First of all, you can boot Authentic vwithout root
privileges  like this:

# Initialize a virtualenv::

    virtualenv authentic
    source ./authentic/bin/activate
    cd authentic

# Install Authentic::

    pip install

# Initialize the database migrations:: syncdb --migrate

# Run the HTTP test server:: runserver

   Version 2.2.0 is the first version supporting only Django 1.7, if you are
   using a previous one you must first upgrade to 2.1.12 before tempting
   upgrade to a release later than 2.2.0.

Code Style

black is used to format the code, using thoses parameters:

    black --target-version py37 --skip-string-normalization --line-length 110

There is .pre-commit-config.yaml to use pre-commit to automatically run black
before commits. (execute `pre-commit install` to install the git hook.)

isort is used to format the imports, using those parameter:

    isort --profile black --line-length 110

pyupgrade is used to automatically upgrade syntax, using those parameters:

    pyupgrade --keep-percent-format --py37-plus

djhtml is used to automatically indent html files, using those parameters:

    djhtml --tabwidth 2

django-upgrade is used to automatically upgrade Django syntax, using those parameters:

    django-upgrade --target-version 3.2

There is .pre-commit-config.yaml to use pre-commit to automatically run these tools
before commits. (execute `pre-commit install` to install the git hook.)


Authentic's developpers and users hangs on the mailing list
See archives or register at

You can "open": bug
reports or feature request on this site.

Entr'ouvert also provides a commercial support. For information, see


Authentic is copyrighted by Entr'ouvert and is licensed through the GNU Affero
General Public Licence, version 3 or later. A copy of the whole license text
is available in the COPYING file.