AuthKit
+++++++

AuthKit is a series of useful parts that you can use as a whole or with other software to build your own auth system. 

Used as a whole, AuthKit is a complete system for adding authentication and authorisation facilities to your project to manage anything from simple username and password checking to sophisticated systems where multiple users access multiple applications with different permissions. AuthKit supports roles, groups, encrypted passwords, account disabling, sign in history and has an extensible driver interface for different store back-ends.

AuthKit functionality comes in four parts which you can use together or separately as required by your applicaiton. You can also integrate AuthKit with other security systems such as ``peak.security``. The main parts are:

Auth Store and Authorisation
    Used to store user, role, application, group and other permission information as well as sign in status and history. Multiple drivers exist to store auth information in different formats. Currently SQLObject and PythonWeb.org database drivers are supported which in turn support most SQL databases.

Auth Middleware and Authentication
    Used to intercept ``403`` and ``401`` HTTP status codes in web applications and present the user with a way of signing in. AuthKit can function with all ``paste.auth`` middleware as well as its own form and cookie based middleware component.
    
FormEncode Validators, FormBuild Forms and Framework Controllers
    FormEncode validators are already setup to validate any of the data you might want to add to an Auth Store. FormBuild Forms for adding new accounts and signing in are already created so it is very easy to build your own web based auth admin tools to create/edit users, modify roles etc. We've even written Pylons controllers that tie everything together. You just pick and choose the bits you want for your applicaiton.

Framework Integration
    You can automatically add AuthKit support to an existing Python project using the ``paster authkit`` command. Support for integration with other frameworks is easily added through paste's extension commands.
    
AuthKit integrates well with Paste and Pylons amongst other software but its use is not limited to web based systems. It is equally at home being used in command line and GUI apps or anywhere else. All parts of the software are designed to be fully pluggable so you can create the ideal auth system for your project with the minimum of effort.

Documentation
=============

The current documentation is a work in progress and does not yet fully cover the full scope of the package but it will get you started.

For users:

#. `Understanding The Auth Store <manual.html>`_
#. `The Full Picture: Pylons Integration <pylons.html>`_
#. Auth Validators
#. Custom Controllers
#. Auth Middleware
#. `Writing an Auth Store Driver <driver.html>`_
#. `Future <future.html>`_

Status
======

AuthKit is not finished. It hasn't been used in production yet and will almost certainly have serious bugs.

Author
======

`James Gardner <http://www.jimmyg.org/>`_ (`e-mail <mailto:python@jimmyg.org>`_)

Development sponsored by `3aims Web Development. <http://www.3aims.com/>`_