Pyramid autenticació

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Cal distingir entre:

  • Autenticació: determinar si l'usuari és qui diu ser.
  • Autorització: control de quins usuaris tenen accés a quines pàgines.



Autenticació Pyramid estàndard

El mòdul d'autenticació i de control de sessió el podem veure a la següent documentació:



Autenticació Pyramid amb LDAP

La referència principal és aquesta:

I el meu exemple:

Abans cal preparar l'entorn:

  • Carregar les llibreries adequades (en Ubuntu):
    # apt-get install libldap2-dev libsasl2-dev
  • Afegir pyramid_ldap al nostre projecte buildout (buildout.cfg)
  • Reconstruir l'aplicació:
    $ bin/buildout -v

...i ara podem anar al tutorial i mirar-nos el codi. Mira't, però, les indicacions de més avall per fer l'adaptació:


Exemple Egipcis-LDAP

Trobareu l'exemple dels egipcis al meu repositori:

https://github.com/emieza/egipcis-ldap.git

Per tal que funcioni caldrà fer algunes modificacions del tutorial de Pyramid. Llegeix-les a continuació...

Sort!!!


Anonymous Bind

Pensa que el BIND (autenticació per administrar) es pot fer amb ANOYMOUS. Per fer això cal posar:

  • bind=""
  • passwd=""

...i no deixar-ho per defecte (sense indicar els atributs), ja que per defecte son None i això no serveix com a anonymous.

Amb això ja pots autenticar, al menys. Prova-ho abans de continuar...


Gestió dels grups a la ACL

  1. Primer de tot assegura't que has substituït la funció groupfinder de l'arxiu security.py per la nova versió que hi ha al tutorial de Pyramid (anem a buscar els grups al LDAP, no al array d'abans).
  2. Assegura't d'haver creat els grups i d'accedir-hi correctament pel DN complert.
  3. El filtre del config.ldap_set_groups_query ha de ser coherent amb la nostra estrctura de noms. #:L'exemple del Pyramid utiltiza objectCategory enlloc del objectClass. A mi m'ha quedat així:
    filter_tmpl='(&(objectClass=groupOfNames)(member=%(userdn)s))',
  4. A la ACL del Root Factory per permetre l'entrada al Faraó en la piràmide, el nom del grup ja no serà (Allow, 'group:farao', 'master')
    ...sinó que caldrà posar el DN complert del grup, en el meu cas:
    (Allow, 'cn=farao,ou=grups,dc=enric,dc=tk', 'master')