Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

Download
ActivePython
INSTALL>
pypm install zope.authentication

How to install zope.authentication

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install zope.authentication
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
4.1.0 Available View build log
3.7.1 Available View build log
Windows (64-bit)
4.1.0 Available View build log
3.7.1 Available View build log
Mac OS X (10.5+)
4.1.0 Available View build log
4.0.0 Available View build log
3.7.1 Available View build log
Linux (32-bit)
4.1.0 Available View build log
4.0.0 Available View build log
3.7.1 Available View build log
Linux (64-bit)
4.1.0 Available View build log
4.0.0 Available View build log
3.7.1 Available View build log
4.1.0 Available View build log
 
License
ZPL 2.1
Lastest release
version 4.1.0 on Feb 22nd, 2013

This package provides a definition of authentication concepts for use in Zope Framework.

Detailed Documentation

Logout Support

Logout support is defined by a simple interface ILogout:

>>> from zope.authentication.interfaces import ILogout

that has a single 'logout' method.

The current use of ILogout is to adapt an IAuthentication component to ILogout To illustrate, we'll create a simple logout implementation that adapts IAuthentication:

>>> @adapter(IAuthentication)
... @implementer(ILogout)
... class SimpleLogout(object):
...
...     def __init__(self, auth):
...         pass
...
...     def logout(self, request):
...         print('User has logged out')
>>> provideAdapter(SimpleLogout)

and something to represent an authentication utility:

>>> @implementer(IAuthentication)
... class Authentication(object):
...     pass
>>> auth = Authentication()

To perform a logout, we adapt auth to ILogout and call 'logout':

>>> logout = ILogout(auth)
>>> logout.logout(TestRequest())
User has logged out
The 'NoLogout' Adapter

The class:

>>> from zope.authentication.logout import NoLogout

can be registered as a fallback provider of ILogout for IAuthentication components that are not otherwise adaptable to ILogout. NoLogout's logout method is a no-op:

>>> NoLogout(auth).logout(TestRequest())
Logout User Interface

Because some authentication protocols do not formally support logout, it may not be possible for a user to logout once he or she has logged in. In such cases, it would be inappropriate to present a user interface for logging out.

Because logout support is site-configurable, Zope provides an adapter that, when registered, indicates that the site is configured for logout:

>>> from zope.authentication.logout import LogoutSupported

This class merely serves as a flag as it implements ILogoutSupported:

>>> from zope.authentication.interfaces import ILogoutSupported
>>> ILogoutSupported.implementedBy(LogoutSupported)
True
>>> request = object()
>>> ILogoutSupported.providedBy(LogoutSupported(request))
True
Principal Terms

Principal Terms are used to support browser interfaces for searching principal sources. They provide access to tokens and titles for values. The principal terms view uses an authentication utility to get principal titles. Let's create an authentication utility to demonstrate how this works:

>>> class Principal:
...     def __init__(self, id, title):
...         self.id, self.title = id, title
>>> from zope.interface import implementer
>>> from zope.authentication.interfaces import IAuthentication
>>> from zope.authentication.interfaces import PrincipalLookupError
>>> @implementer(IAuthentication)
... class AuthUtility:
...     data = {'jim': u'Jim Fulton', 'stephan': u'Stephan Richter'}
...
...     def getPrincipal(self, id):
...         title = self.data.get(id)
...         if title is not None:
...             return Principal(id, title)
...         raise PrincipalLookupError

Now we need to install the authentication utility:

>>> from zope.component import provideUtility
>>> provideUtility(AuthUtility(), IAuthentication)

We need a principal source so that we can create a view from it.

>>> from zope.component import getUtility
>>> class PrincipalSource:
...     def __contains__(self, id):
...          auth = getUtility(IAuthentication)
...          try:
...              auth.getPrincipal(id)
...          except PrincipalLookupError:
...              return False
...          else:
...              return True

Now we can create an terms view:

>>> from zope.authentication.principal import PrincipalTerms
>>> terms = PrincipalTerms(PrincipalSource(), None)

Now we can ask the terms view for terms:

>>> term = terms.getTerm('stephan')
>>> term.title
'Stephan Richter'
>>> term.token
'c3RlcGhhbg__'

If we ask for a term that does not exist, we get a lookup error:

>>> terms.getTerm('bob')
Traceback (most recent call last):
...
LookupError: bob

If we have a token, we can get the principal id for it.

>>> terms.getValue('c3RlcGhhbg__')
'stephan'
CHANGES
4.1.0 (2013-02-21)
  • Added Python 3.3 support.
  • Added tox.ini and MANIFEST.in.
4.0.0 (2012-07-04)
  • Broke inappropriate testing dependency on zope.component.nextutility.

    (Forward-compatibility with zope.component 4.0.0).

  • Replaced deprecated zope.component.adapts usage with equivalent zope.component.adapter decorator.

  • Replaced deprecated zope.interface.implements usage with equivalent zope.interface.implementer decorator.

  • Dropped support for Python 2.4 and 2.5.

3.7.1 (2010-04-30)
  • Removed undeclared testing dependency on zope.testing.
3.7.0 (2009-03-14)

Initial release. This package was split off from zope.app.security to provide a separate common interface definition for authentication utilities without extra dependencies.

Subscribe to package updates

Last updated Feb 22nd, 2013

Download Stats

Last month:1

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.