pyramid-auth.readthedocs.io Open in urlscan Pro
104.16.254.120  Public Scan

Submitted URL: https://pyramid-auth.lereskp.fr/
Effective URL: https://pyramid-auth.readthedocs.io/en/latest/
Submission: On November 21 via automatic, source certstream-suspicious — Scanned from FR

Form analysis 2 forms found in the DOM

GET search.html

<form class="search" action="search.html" method="get">
  <input type="text" name="q">
  <input type="submit" value="Go">
  <input type="hidden" name="check_keywords" value="yes">
  <input type="hidden" name="area" value="default">
</form>

GET //readthedocs.org/projects/pyramid-auth/search/

<form id="flyout-search-form" class="wy-form" target="_blank" action="//readthedocs.org/projects/pyramid-auth/search/" method="get">
  <input type="text" name="q" aria-label="Chercher dans la doc" placeholder="Chercher dans la doc">
</form>

Text Content

NAVIGATION

 * index
 * pyramid_auth 0.4 documentation »


PYRAMID_AUTH’S DOCUMENTATION!¶


INTRODUCTION¶

This is a plugin for pyramid which provides a simple authentication system. The
idea was to use exising authentication’s policies to provide multiple support.
Currently this plugin support cookie, remote_user and ldap policies.

By default the cookie and ldap policies generate the form and the urls
automatically:
 * /login: display the login form
 * /logout: logout the user
 * /forbidden: the user is redirected to this page when he is logged but doesn’t
   have the right permission to see a page.

If you want to generate your own urls you can set the following parameter

pyramid_auth.no_routes

> If set in your config, no routes will be added automatically. It’s usefull
> when you use an API for authentication.

Note

If you want to change the rendering of the template to include your design you
can:

 * Create a template in the folder templates/auth of your project named
   base.mak. Each templates (login, forbidden) inherit from it.
 * Create the login.mak and/or forbidden.mak templates in the folder
   templates/auth to overwrite the default ones.


COOKIE POLICY¶

This policy uses pyramid.authentication.AuthTktAuthenticationPolicy. When a user
wants to login, it displays a login/password form to process to the
authentication.


INSTALLATION¶

In your .ini file add pyramid_auth to pyramid.includes like this:

pyramid.includes =
    pyramid_auth
    ...


Also you need to add pyramid_auth in setup.py in install_requires:

install_requires=[
    ...
    'pyramid_auth'
]



CONFIGURATION¶

You need to set some options in your .ini file. See this example for the
required ones:

pyramid_auth.policy = cookie
pyramid_auth.cookie.secret = mysecret
pyramid_auth.cookie.validate_function = validate_function


OPTIONS¶

pyramid_auth.cookie.validate_function

> Function to validate the credential. It can make some call in your DB or make
> some static verification. Here is a small example:
> 
> def validate(request, login, password):
>     if login == 'Bob' and password == 'bobpwd':
>         return True
>     return False
> 
> 
> Required.

pyramid_auth.cookie.secret

> The secret (a string) used for auth_tkt cookie signing. Required.

pyramid_auth.cookie.callback

> Default: None. A callback passed the userid and the request, expected to
> return None if the userid doesn’t exist or a sequence of principal identifiers
> (possibly empty) if the user does exist. If callback is None, the userid will
> be assumed to exist with no principals. Optional.

pyramid_auth.cookie.cookie_name

> Default: auth_tkt. The cookie name used (string). Optional.

pyramid_auth.cookie.secure

> Default: False. Only send the cookie back over a secure conn. Optional.

pyramid_auth.cookie.include_ip

> Default: False. Make the requesting IP address part of the authentication data
> in the cookie. Optional.
> 
> For IPv6 this option is not recommended. The mod_auth_tkt specification does
> not specify how to handle IPv6 addresses, so using this option in combination
> with IPv6 addresses may cause an incompatible cookie. It ties the
> authentication ticket to that individual’s IPv6 address.

pyramid_auth.cookie.timeout

> Default: None. Maximum number of seconds which a newly issued ticket will be
> considered valid. After this amount of time, the ticket will expire
> (effectively logging the user out). If this value is None, the ticket never
> expires. Optional.

pyramid_auth.cookie.reissue_time

> Default: None. If this parameter is set, it represents the number of seconds
> that must pass before an authentication token cookie is automatically reissued
> as the result of a request which requires pyramid_auth. The duration is
> measured as the number of seconds since the last auth_tkt cookie was issued
> and ‘now’. If this value is 0, a new ticket cookie will be reissued on every
> request which requires authentication.
> 
> A good rule of thumb: if you want auto-expired cookies based on inactivity:
> set the timeout value to 1200 (20 mins) and set the reissue_time value to
> perhaps a tenth of the timeout value (120 or 2 mins). It’s nonsensical to set
> the timeout value lower than the reissue_time value, as the ticket will never
> be reissued if so. However, such a configuration is not explicitly prevented.
> 
> Optional.

pyramid_auth.cookie.max_age

> Default: None. The max age of the auth_tkt cookie, in seconds. This differs
> from timeout inasmuch as timeout represents the lifetime of the ticket
> contained in the cookie, while this value represents the lifetime of the
> cookie itself. When this value is set, the cookie’s Max-Age and Expires
> settings will be set, allowing the auth_tkt cookie to last between browser
> sessions. It is typically nonsensical to set this to a value that is lower
> than timeout or reissue_time, although it is not explicitly prevented.
> Optional.

pyramid_auth.cookie.path

> Default: /. The path for which the auth_tkt cookie is valid. May be desirable
> if the application only serves part of a domain. Optional.

pyramid_auth.cookie.http_only

> Default: False. Hide cookie from JavaScript by setting the HttpOnly flag. Not
> honored by all browsers. Optional.

pyramid_auth.cookie.wild_domain

> Default: True. An auth_tkt cookie will be generated for the wildcard domain.
> If your site is hosted as example.com this will make the cookie available for
> sites underneath example.com such as www.example.com. Optional.

pyramid_auth.cookie.parent_domain

> Default: False. An auth_tkt cookie will be generated for the parent domain of
> the current site. For example if your site is hosted under www.example.com a
> cookie will be generated for .example.com. This can be useful if you have
> multiple sites sharing the same domain. This option supercedes the wild_domain
> option. Optional.

pyramid_auth.cookie.domain

> Default: None. If provided the auth_tkt cookie will only be set for this
> domain. This option is not compatible with wild_domain and parent_domain.
> Optional.

pyramid_auth.cookie.hashalg

> Default: sha512 (the literal string).
> 
> Any hash algorithm supported by Python’s hashlib.new() function can be used as
> the hashalg.
> 
> Cookies generated by different instances of AuthTktAuthenticationPolicy using
> different hashalg options are not compatible. Switching the hashalg will imply
> that all existing users with a valid cookie will be required to re-login.
> 
> Optional.

pyramid_auth.cookie.debug

> Default: False. If debug is True, log messages to the Pyramid debug logger
> about the results of various authentication steps.
> 
> Optional.


REMOTE_USER POLICY¶

This policy uses pyramid.authentication.RemoteUserAuthenticationPolicy. The user
is authenticated by the http server which provides in the environ a key with the
login.


INSTALLATION¶

In your .ini file add pyramid_auth to pyramid.includes like this:

pyramid.includes =
    pyramid_auth
    ...


Also you need to add pyramid_auth in setup.py in install_requires:

install_requires=[
    ...
    'pyramid_auth'
]



CONFIGURATION¶

You need to set some options in your .ini file. See this example for the
required ones:

pyramid_auth.policy = remote_user


OPTIONS¶

environ_key Default: REMOTE_USER. The key in the WSGI environ which provides the
userid. Optional. callback Default: None. A callback passed the userid and the
request, expected to return None if the userid doesn’t exist or a sequence of
principal identifiers (possibly empty) representing groups if the user does
exist. If callback is None, the userid will be assumed to exist with no group
principals. Optional. debug Default: False. If debug is True, log messages to
the Pyramid debug logger about the results of various authentication steps.
Optional.


LDAP POLICY¶

This policy uses pyramid_ldap. Basically the same logic than the cookie policy
but we just validate the login/password with the ldap. As you will see in the
configuration, it’s possible to get the ldap user’s groups. In this way, you
will be able to set some permissions in your pyramid project according to the
ldap configuration.


INSTALLATION¶

You need to have openldap header installed. For example on centos/fedora:

yum install openldap-devel


In your .ini file add pyramid_ldap and pyramid_auth to pyramid.includes like
this:

pyramid.includes =
    pyramid_ldap
    pyramid_auth
    ...


Warning

the order is important, you need to include pyramid_ldap before pyramid_auth

Also you need to add pyramid_ldap and pyramid_auth in setup.py in
install_requires:

install_requires=[
    ...
    'pyramid_ldap'
    'pyramid_auth'
]


Note

pyramid_ldap is not installed in pyramid_auth since we don’t want to force the
installation of ldap if we don’t want to use it!


CONFIGURATION¶

You need to set some options in your .ini file. See this example for the
required ones:

pyramid_auth.policy = ldap
pyramid_auth.ldap.cookie.secret = mysecret
pyramid_auth.ldap.setup.uri = http://ldap.lereskp.fr
pyramid_auth.ldap.setup.passwd = myldappasswd

pyramid_auth.ldap.login.base_dn = CN=Users,DC=lereskp,DC=fr
pyramid_auth.ldap.login.filter_tmpl = (sAMAccountName=$login)


If you want to put some permissions according to the ldap groups, you have to
give the parameters to be able to query the ldap:

pyramid_auth.policy = ldap
pyramid_auth.ldap.cookie.secret = mysecret
pyramid_auth.ldap.setup.uri = http://ldap.lereskp.fr
pyramid_auth.ldap.setup.passwd = myldappasswd

pyramid_auth.ldap.login.base_dn = CN=Users,DC=lereskp,DC=fr
pyramid_auth.ldap.login.filter_tmpl = (sAMAccountName=$login)

pyramid_auth.ldap.groups.base_dn = CN=Users,DC=lereskp,DC=fr
pyramid_auth.ldap.groups.filter_tmpl = (&(objectCategory=group)(member=$userdn))


OPTIONS¶

COOKIE¶

pyramid_auth.ldap.cookie.secret

> The secret (a string) used for auth_tkt cookie signing. Required.

pyramid_auth.ldap.cookie.callback

> Default: None. A callback passed the userid and the request, expected to
> return None if the userid doesn’t exist or a sequence of principal identifiers
> (possibly empty) if the user does exist. If callback is None, the userid will
> be assumed to exist with no principals. Optional.

pyramid_auth.ldap.cookie.cookie_name

> Default: auth_tkt. The cookie name used (string). Optional.

pyramid_auth.ldap.cookie.secure

> Default: False. Only send the cookie back over a secure conn. Optional.

pyramid_auth.ldap.cookie.include_ip

> Default: False. Make the requesting IP address part of the authentication data
> in the cookie. Optional.
> 
> For IPv6 this option is not recommended. The mod_auth_tkt specification does
> not specify how to handle IPv6 addresses, so using this option in combination
> with IPv6 addresses may cause an incompatible cookie. It ties the
> authentication ticket to that individual’s IPv6 address.

pyramid_auth.ldap.cookie.timeout

> Default: None. Maximum number of seconds which a newly issued ticket will be
> considered valid. After this amount of time, the ticket will expire
> (effectively logging the user out). If this value is None, the ticket never
> expires. Optional.

pyramid_auth.ldap.cookie.reissue_time

> Default: None. If this parameter is set, it represents the number of seconds
> that must pass before an authentication token cookie is automatically reissued
> as the result of a request which requires authentication. The duration is
> measured as the number of seconds since the last auth_tkt cookie was issued
> and ‘now’. If this value is 0, a new ticket cookie will be reissued on every
> request which requires authentication.
> 
> A good rule of thumb: if you want auto-expired cookies based on inactivity:
> set the timeout value to 1200 (20 mins) and set the reissue_time value to
> perhaps a tenth of the timeout value (120 or 2 mins). It’s nonsensical to set
> the timeout value lower than the reissue_time value, as the ticket will never
> be reissued if so. However, such a configuration is not explicitly prevented.
> 
> Optional.

pyramid_auth.ldap.cookie.max_age

> Default: None. The max age of the auth_tkt cookie, in seconds. This differs
> from timeout inasmuch as timeout represents the lifetime of the ticket
> contained in the cookie, while this value represents the lifetime of the
> cookie itself. When this value is set, the cookie’s Max-Age and Expires
> settings will be set, allowing the auth_tkt cookie to last between browser
> sessions. It is typically nonsensical to set this to a value that is lower
> than timeout or reissue_time, although it is not explicitly prevented.
> Optional.

pyramid_auth.ldap.cookie.path

> Default: /. The path for which the auth_tkt cookie is valid. May be desirable
> if the application only serves part of a domain. Optional.

pyramid_auth.ldap.cookie.http_only

> Default: False. Hide cookie from JavaScript by setting the HttpOnly flag. Not
> honored by all browsers. Optional.

pyramid_auth.ldap.cookie.wild_domain

> Default: True. An auth_tkt cookie will be generated for the wildcard domain.
> If your site is hosted as example.com this will make the cookie available for
> sites underneath example.com such as www.example.com. Optional.

pyramid_auth.ldap.cookie.parent_domain

> Default: False. An auth_tkt cookie will be generated for the parent domain of
> the current site. For example if your site is hosted under www.example.com a
> cookie will be generated for .example.com. This can be useful if you have
> multiple sites sharing the same domain. This option supercedes the wild_domain
> option. Optional.

pyramid_auth.ldap.cookie.domain

> Default: None. If provided the auth_tkt cookie will only be set for this
> domain. This option is not compatible with wild_domain and parent_domain.
> Optional.

pyramid_auth.ldap.cookie.hashalg

> Default: sha512 (the literal string).
> 
> Any hash algorithm supported by Python’s hashlib.new() function can be used as
> the hashalg.
> 
> Cookies generated by different instances of AuthTktAuthenticationPolicy using
> different hashalg options are not compatible. Switching the hashalg will imply
> that all existing users with a valid cookie will be required to re-login.
> 
> Optional.

pyramid_auth.ldap.cookie.debug

> Default: False. If debug is True, log messages to the Pyramid debug logger
> about the results of various authentication steps.
> 
> Optional.

SETUP¶

pyramid_auth.ldap.setup.uri

> ldap server uri. Required.

pyramid_auth.ldap.setup.bind

> Default None. Bind that will be used to bind a connector. Optional.

pyramid_auth.ldap.setup.passwd

> Default None. Password that will be used to bind a connector. Optional.

pyramid_auth.ldap.setup.size

> Default 10. pool size. Optional.

pyramid_auth.ldap.setup.retry_max

> Default 3. Number of attempts when a server is down. Optional.

pyramid_auth.ldap.setup.retry_delay

> Default: .1. Delay in seconds before a retry. Optional.

pyramid_auth.ldap.setup.use_tls

> Default False. Activate TLS when connecting. Optional.

pyramid_auth.ldap.setup.timeout

> Default -1. Connector timeout. Optional.

pyramid_auth.ldap.setup.use_pool

> Default True. Activates the pool. If False, will recreate a connector each
> time. Optional.

LOGIN¶

pyramid_auth.ldap.login.base_dn

> is the DN at which to begin the search.

pyramid_auth.ldap.login.filter_tmpl

> is a string which can be used as an LDAP filter: it should contain the
> replacement value %(login)s.

pyramid_auth.ldap.login.scope

> is any valid LDAP scope value (e.g. ldap.SCOPE_ONELEVEL).

pyramid_auth.ldap.login.cache_period

> is the number of seconds to cache login search results; if it is 0, login
> search results will not be cached.

GROUPS¶

pyramid_auth.ldap.groups.base_dn

> is the DN at which to begin the search.

pyramid_auth.ldap.groups.filter_tmpl

> is a string which can be used as an LDAP filter: it should contain the
> replacement value %(userdn)s.

Important

In pyramid_ldap userdn represent the user distinguished name. In pyramid_auth it
represents the user uid. So you should make your filter_tmpl according to the
user uid.

pyramid_auth.ldap.groups.scope

> is any valid LDAP scope value (e.g. ldap.SCOPE_SUBTREE). cache_period is the
> number of seconds to cache groups search results; if it is 0, groups search
> results will not be cached.

EXTRA¶

pyramid_auth.ldap.validate_function

> Default: None. You can set a function to validate the ldap login/password it
> you want to be more specific. Optional.

pyramid_auth.ldap.callback

> Default: None. A callback passed the userid and the request to extend the
> groups found by the ldap groups query. Optional.


TABLE OF CONTENTS

 * pyramid_auth’s documentation!
   * Introduction
   * Cookie policy
     * Installation
     * Configuration
       * Options
   * Remote_user policy
     * Installation
     * Configuration
       * Options
   * ldap policy
     * Installation
     * Configuration
       * Options
         * Cookie
         * Setup
         * Login
         * Groups
         * Extra


QUICK SEARCH



Enter search terms or a module, class or function name.




NAVIGATION

 * index
 * pyramid_auth 0.4 documentation »

© Copyright 2015, Aurélien Matouillot. Created using Sphinx 1.2.2.
  v: latest
Versions latest develop Téléchargements PDF HTML Epub Sur Read the Docs Accueil
du projet Compilations Téléchargements Sur GitHub Afficher Modifier Recherche


--------------------------------------------------------------------------------

Hébergé par Read the Docs · Politique de confidentialité