Tres Seaver
2011-03-16 d6ab696f0edee85949d92151b03c6507dc793444
commit | author | age
7141c7 1 repoze.who Changelog
TS 2 ====================
aa8755 3
f8ef81 4 Unreleased
TS 5 ----------
6
7 - ``repoze.who.plugins.htpasswd``:  defend against timing-based attacks.
8
9
2b9b1f 10 2.0a4 (2011-02-02)
TS 11 ------------------
9a8e60 12
b01f44 13 - Ensure that the middleware calls ``close()`` (if it exists) on the
TS 14   iterable returned from thw wrapped application, as required by PEP 333.
15   http://bugs.repoze.org/issue174
16
03fba8 17 - Make ``make_api_factory_with_config`` tolerant of invalid filenames /
TS 18   content for the config file:  in such cases, the API factory will have
19   *no* configured plugins or policies:  it will only be useful for retrieving
20   the API from an environment populated by middleware.
21
c61031 22 - Fix bug in ``repoze.who.api`` where the ``remember()`` or ``forget()``
TS 23   methods could return a None if the identifier plugin returned a None.
cfe26c 24
c61031 25 - Fix ``auth_tkt`` plugin to not hand over tokens as strings to paste. See
fc9a88 26   http://lists.repoze.org/pipermail/repoze-dev/2010-November/003680.html
BS 27
c61031 28 - Fix ``auth_tkt`` plugin to add "secure" and "HttpOnly" to cookies when
TS 29   configured with ``secure=True``:  these attributes prevent the browser from
30   sending cookies over insecure channels, which could be vulnerable to some
3b5782 31   XSS attacks.
d7e647 32
15e365 33 - Avoid propagating unicode 'max_age' value into cookie headers.  See
TS 34   https://bugs.launchpad.net/bugs/674123 .
35
e8080a 36 - Added a single-file example BFG application demonstrating the use of
TS 37   the new 'login' and 'logout' methods of the API object.
38
924f24 39 - Add ``login`` and ``logout`` methods to the ``repoze.who.api.API`` object,
TS 40   as a convenience for application-driven login / logout code, which would
95f147 41   otherwise need to use private methods of the API, and reach down into
TS 42   its plugins.
f8ef81 43
9a8e60 44
2c742e 45 2.0a3 (2010-09-30)
eb7071 46 ------------------
f80021 47
a446d6 48 - Deprecated the following plugins, moving their modules, tests, and docs
ff604c 49   to a new project, ``repoze.who.deprecatedplugins``:
a446d6 50
TS 51   - ``repoze.who.plugins.cookie.InsecureCookiePlugin``
52
630a05 53   - ``repoze.who.plugins.form.FormPlugin``
a446d6 54
630a05 55   - ``repoze.who.plugins.form.RedirectingFormPlugin``
a446d6 56
TS 57 - Made the ``repoze.who.plugins.cookie.InsecureCookiePlugin`` take a
76e951 58   ``charset`` argument, and use to to encode / decode login and password.
TS 59   See http://bugs.repoze.org/issue155
60
a446d6 61 - Updated ``repoze.who.restrict`` to return headers as a list, to keep
TS 62   ``wsgiref`` from complaining.
5b6365 63
a446d6 64 - Helped default request classifier cope with xml submissions with an
6b7b34 65   explicit charset defined: http://bugs.repoze.org/issue145 (Lorenzo
CM 66   M. Catucci)
67
a446d6 68 - Corrected the handling of type and subtype when matching an XML post
6b7b34 69   to ``xmlpost`` in the default classifier, which, according to RFC
CM 70   2045, must be matched case-insensitively:
71   http://bugs.repoze.org/issue145 (Lorenzo M. Catucci)
72
a349a2 73 - Added ``repoze.who.config:make_api_factory_with_config``, a convenience
TS 74   method for applications which want to set up their own API Factory from
75   a configuration file.
76   
f80021 77 - Fixed example call to ``repoze.who.config:make_middleware_with_config``
TS 78   (added missing ``global_config`` argument).  See
79   http://bugs.repoze.org/issue114
80
f8ef81 81
c186ae 82 2.0a2 (2010-03-25)
TS 83 ------------------
52bc23 84
TS 85 Bugs Fixed
86 ~~~~~~~~~~
87
88 - Fixed failure to pass substution values in log message string formatting
89   for ``repoze.who.api:API.challenge``.  Fix included adding tests for all
90   logging done by the API object.  See http://bugs.repoze.org/issue122
91
92 Backward Incompatibilities
93 ~~~~~~~~~~~~~~~~~~~~~~~~~~
94
95 - Adjusted logging level for some lower-level details from ``info``
96   to ``debug``.
f8ef81 97
52bc23 98
TS 99
e25b84 100 2.0a1 (2010-02-24)
993216 101 ------------------
TS 102
b4b8ee 103 Features
TS 104 ~~~~~~~~
62cd25 105
c9c1c6 106 - Restored the ability to create the middleware using the old ``classifier``
TS 107   argument.  That argument is now a deprecated-but-will-work-forever alias for
108   ``request_classifier``.
cbc983 109
b0f81f 110 - The ``auth_tkt`` plugin now implements the ``IAuthenticator`` interface,
TS 111   and should normally be used both as an ``IIdentifier`` and an
112   ``IAuthenticator``.
113
993216 114 - Factored out the API of the middleware object to make it useful from
TS 115   within the application.  Applications using ``repoze.who``` now fall into
116   one of three catgeories:
117
118   - "middleware-only" applications are configured with middleware, and
119     use either ``REMOTE_USER`` or ``repoze.who.identity`` from the environment
120     to determing the authenticated user.
121
122   - "bare metal" applications use no ``repoze.who`` middleware at all:
123     instead, they configure and an ``APIFactory`` object at startup, and
124     use it to create an ``API`` object when needed on a per-request basis.
125
126   - "hybrid" applications are configured with ``repoze.who`` middleware,
127     but use a new library function to fetch the ``API`` object from the
c9c1c6 128     environ, e.g. to permit calling ``remember`` after a signup or successful
TS 129     login.
993216 130
b4b8ee 131 Bugs Fixed
TS 132 ~~~~~~~~~~
133
134 - Fix http://bugs.repoze.org/issue102: when no challengers existed,
135   logging would cause an exception.
136
137 - Remove ``ez_setup.py`` and dependency on it in setup.py (support
138   distribute).
139
140 Backward Incompatibilities
141 ~~~~~~~~~~~~~~~~~~~~~~~~~~
142
b213af 143 - The middleware used to allow identifier plugins to "pre-authenticate"
TS 144   an identity.  This feature is no longer supported: the ``auth_tkt`` 
145   plugin, which used to use the feature, is now configured to work as
c9c1c6 146   an authenticator plugin (as well as an identifier).
b213af 147
b4b8ee 148 - The ``repoze.who.middleware:PluggableAuthenticationMiddleware`` class
TS 149   no longer has the following (non-API) methods (now made API methods
150   of the ``repoze.who.api:API`` class):
151
152   - ``add_metadata``
153   - ``authenticate``
154   - ``challenge``
155   - ``identify``
156
157 - The following (non-API) functions moved from ``repoze.who.middleware`` to
158   ``repoze.who.api``:
159   
160   - ``make_registries``
161   - ``match_classification``
162   - ``verify``
163
164
f8ef81 165
060054 166 1.0.18 (2009-11-05)
TS 167 -------------------
798feb 168
TS 169 - Issue #104:  AuthTkt plugin was passing an invalid cookie value in
170   headers from ``forget``, and was not setting the ``Max-Age`` and 
171   ``Expires`` attributes of those cookies.
172
b4b8ee 173
f8ef81 174
6e136f 175 1.0.17 (2009-11-05)
TS 176 -------------------
e0d138 177
TS 178 - Fixed the ``repoze.who.plugins.form.make_plugin`` factory's ``formcallable``
179   argument handling, to allow passing in a dotted name (e.g., from a config
180   file).
181
b4b8ee 182
f8ef81 183
6b15ee 184 1.0.16 (2009-11-04)
028e4d 185 -------------------
1ec83d 186
8dd881 187 - Exposed ``formcallable`` argument for ``repoze.who.plugins.form.FormPlugin``
TS 188   to the callers of the ``repoze.who.plugins.form.make_plugin`` factory.
189   Thanks to Roland Hedburg for the report.
21a9c5 190
8dd881 191 - Fixed an issue that caused the following symptom when using the
TS 192   ini configuration parser::
193
194    TypeError: _makePlugin() got multiple values for keyword argument 'name'
21a9c5 195
CM 196   See http://bugs.repoze.org/issue92 for more details.  Thanks to vaab
197   for the bug report and initial fix.
198
1ec83d 199
7141c7 200 1.0.15 (2009-06-25)
TS 201 -------------------
299b4c 202
a14163 203 - If the form post value ``max_age`` exists while in the ``identify``
CM 204   method is handling the ``login_handler_path``, pass the max_age
205   value in the returned identity dictionary as ``max_age``.  See the
206   below bullet point for why.
207
299b4c 208 - If the ``identity`` dict passed to the ``auth_tkt`` ``remember``
CM 209   method contains a ``max_age`` key with a string (or integer) value,
210   treat it as a cue to set the ``Max-Age`` and ``Expires`` headers in
211   the returned cookies.  The cookie ``Max-Age`` is set to the value
212   and the ``Expires`` is computed from the current time.
213
7141c7 214
TS 215 1.0.14 (2009-06-17)
216 -------------------
9318dd 217
1810b2 218 - Fix test breakage on Windows.  See http://bugs.repoze.org/issue79 .
TS 219
00a6d9 220 - Documented issue with using ``include_ip`` setting in the ``auth_tkt``
TS 221   plugin.  See http://bugs.repoze.org/issue81 .
222
0dd808 223 - Added 'passthrough_challenge_decider', which avoids re-challenging 401
TS 224   responses which have been "pre-challenged" by the application.
225
9318dd 226 - One-hundred percent unit test coverage.
TS 227
a6f6dc 228 - Add ``timeout`` and ``reissue_time`` arguments to the auth_tkt
CM 229   identifier plugin, courtesty of Paul Johnston.
230
231 - Add a ``userid_checker`` argument to the auth_tkt identifier plugin,
232   courtesty of Gustavo Narea.
233
234   If ``userid_checker`` is provided, it must be a dotted Python name
235   that resolves to a function which accepts a userid and returns a
236   boolean True or False, indicating whether that user exists in a
237   database.  This is a workaround.  Due to a design bug in repoze.who,
238   the only way who can check for user existence is to use one or more
239   IAuthenticator plugin ``authenticate`` methods.  If an
240   IAuthenticator's ``authenticate`` method returns true, it means that
241   the user exists.  However most IAuthenticator plugins expect *both*
242   a username and a password, and will return False unconditionally if
243   both aren't supplied.  This means that an authenticator can't be
244   used to check if the user "only" exists.  The identity provided by
245   an auth_tkt does not contain a password to check against.  The
246   actual design bug in repoze.who is this: when a user presents
247   credentials from an auth_tkt, he is considered "preauthenticated".
248   IAuthenticator.authenticate is just never called for a
249   "preauthenticated" identity, which works fine, but it means that the
250   user will be considered authenticated even if you deleted the user's
251   record from whatever database you happen to be using.  However, if
252   you use a userid_checker, you can ensure that a user exists for the
253   auth_tkt supplied userid.  If the userid_checker returns False, the
254   auth_tkt credentials are considered "no good".
255
7141c7 256
TS 257 1.0.13 (2009-04-24)
258 -------------------
64ba13 259
TS 260 - Added a paragraph to ``IAuthenticator`` docstring, documenting that plugins
261   are allowed to add keys to the ``identity`` dictionary (e.g., to save a
ced7bd 262   second database query in an ``IMetadataProvider`` plugin).
64ba13 263
08b2ae 264 - Patch supplied for issue #71 (http://bugs.repoze.org/issue71)
CM 265   whereby a downstream app can return a generator, relying on an
266   upstream component to call start_response.  We do this because the
267   challenge decider needs the status and headers to decide what to do.
268
56d0c5 269
7141c7 270 1.0.12 (2009-04-19)
TS 271 -------------------
56d0c5 272 - auth_tkt plugin tried to append REMOTE_USER_TOKENS data to
CM 273   existing tokens data returned by auth_tkt.parse_tkt; this was
274   incorrect; just overwrite.
0ee58d 275
TS 276 - Extended auth_tkt plugin factory to allow passing secret in a separate
277   file from the main config file.  See http://bugs.repoze.org/issue40 .
278
7141c7 279
TS 280 1.0.11 (2009-04-10)
281 -------------------
afbbcd 282
8c20ba 283 - Fix auth_tkt plugin; cookie values are now quoted, making it possible
CM 284   to put spaces and other whitespace, etc in usernames. (thanks to Michael
95736b 285   Pedersen).
8c20ba 286
afbbcd 287 - Fix corner case issue of an exception raised when attempting to log
CM 288   when there are no identifiers or authenticators.
289
7141c7 290
TS 291 1.0.10 (2009-01-23)
292 -------------------
7b931d 293
CM 294 - The RedirectingFormPlugin now passes along SetCookie headers set
295   into the response by the application within the NotFound response
296   (fixes TG2 "flash" issue).
297
7141c7 298
TS 299 1.0.9 (2008-12-18)
300 ------------------
30ab69 301
9238cd 302 - The RedirectingFormPlugin now attempts to find a header named
CM 303   ``X-Authentication-Failure-Reason`` among the response headers set
304   by the application when a challenge is issued.  If a value for this
305   header exists (and is non-blank), the value is attached to the
306   redirect URL's query string as the ``reason`` parameter (or a
307   user-settable key).  This makes it possible for downstream
308   applications to issue a response that initiates a challenge with
309   this header and subsequently display the reason in the login form
310   rendered as a result of the challenge.
30ab69 311
7141c7 312
TS 313 1.0.8 (2008-12-13)
314 ------------------
186ff6 315
9238cd 316 - The ``PluggableAuthenticationMiddleware`` constructor accepts a
CM 317   ``log_stream`` argument, which is typically a file.  After this
318   release, it can also be a PEP 333 ``Logger`` instance; if it is a
319   PEP 333 ``Logger`` instance, this logger will be used as the
320   repoze.who logger (instead of one being constructed by the
321   middleware, as was previously always the case).  When the
322   ``log_stream`` argument is a PEP 333 Logger object, the
323   ``log_level`` argument is ignored.
186ff6 324
7141c7 325
TS 326 1.0.7 (2008-08-28)
327 ------------------
37de44 328
9238cd 329 - ``repoze.who`` and ``repoze.who.plugins`` were not added to the
CM 330   ``namespace_packages`` list in setup.py, potentially making 1.0.6 a
331   brownbag release, given that making these packages namespace
332   packages was the only reason for its release.
37de44 333
7141c7 334
TS 335 1.0.6 (2008-08-28)
336 ------------------
facdf8 337
9238cd 338 - Make repoze.who and repoze.who.plugins into namespace packages
CM 339   mainly so we can allow plugin authors to distribute packages in the
340   repoze.who.plugins namespace.
facdf8 341
7141c7 342
TS 343 1.0.5 (2008-08-23)
344 ------------------
519300 345
9238cd 346 - Fix auth_tkt plugin to set the same cookies in its ``remember``
CM 347   method that it does in its ``forget`` method.  Previously, logging
348   out and relogging back in to a site that used auth_tkt identifier
349   plugin was slightly dicey and would only work sometimes.
facdf8 350
9238cd 351 - The FormPlugin plugin has grown a redirect-on-unauthorized feature.
CM 352   Any response from a downstream application that causes a challenge
353   and includes a Location header will cause a redirect to the value of
354   the Location header.
dee08c 355
7141c7 356
TS 357 1.0.4 (2008-08-22)
358 ------------------
b95a59 359
9238cd 360 - Added a key to the '[general]' config section: ``remote_user_key``.
CM 361   If you use this key in the config file, it tells who to 1) not
362   perform any authentication if it exists in the environment during
363   ingress and 2) to set the key in the environment for the downstream
364   app to use as the REMOTE_USER variable.  The default is
365   ``REMOTE_USER``.
b95a59 366
9238cd 367 - Using unicode user ids in combination with the auth_tkt plugin would
CM 368   cause problems under mod_wsgi.
55dc7a 369
9238cd 370 - Allowed 'cookie_path' argument to InsecureCookiePlugin (and config
CM 371   constructor).  Thanks to Gustavo Narea.
55dc7a 372
7141c7 373
TS 374 1.0.3 (2008-08-16)
375 ------------------
f693fe 376
9238cd 377 - A bug in the middleware's ``authenticate`` method made it impossible
CM 378   to authenticate a user with a userid that was null (e.g. 0, False),
379   which are valid identifiers.  The only invalid userid is now None.
c7e12d 380
9238cd 381 - Applied patch from Olaf Conradi which logs an error when an invalid
CM 382   filename is passed to the HTPasswdPlugin.
c7e12d 383
7141c7 384
TS 385 1.0.2 (2008-06-16)
386 ------------------
cad90d 387
9238cd 388 - Fix bug found by Chris Perkins: the auth_tkt plugin's "remember"
CM 389   method didn't handle userids which are Python "long" instances
390   properly.  Symptom: TypeError: cannot concatenate 'str' and 'long'
391   objects in "paste.auth.auth_tkt".
a2c030 392
9238cd 393 - Added predicate-based "restriction" middleware support
CM 394   (repoze.who.restrict), allowing configuratio-driven authorization as
395   a WSGI filter.  One example predicate, 'authenticated_predicate', is
396   supplied, which requires that the user be authenticated either via
397   'REMOTE_USER' or via 'repoze.who.identity'.  To use the filter to
398   restrict access::
cad90d 399
TS 400      [filter:authenticated_only]
401      use = egg:repoze.who#authenticated
402
403    or::
404
405      [filter:some_predicate]
406      use = egg:repoze.who#predicate
407      predicate = my.module:some_predicate
408      some_option = a value
409
7141c7 410
TS 411 1.0.1 (2008-05-24)
412 ------------------
8199a1 413
9238cd 414 - Remove dependency-link to dist.repoze.org to prevent easy_install
CM 415   from inserting that path into its search paths (the dependencies are
416   available from PyPI).
8199a1 417
7141c7 418
TS 419 1.0 (2008-05-04)
420 -----------------
419946 421
9238cd 422 - The plugin at plugins.form.FormPlugin didn't redirect properly after
CM 423   collecting identification information.  Symptom: a downstream app
424   would receive a POST request with a blank body, which would
425   sometimes result in a Bad Request error.
f39349 426
9238cd 427 - Fixed interface declarations of
CM 428   'classifiers.default_request_classifier' and
429   'classifiers.default_password_compare'.
515c69 430
9238cd 431 - Added actual config-driven middleware factory,
CM 432   'config.make_middleware_with_config'
515c69 433
9238cd 434 - Removed fossilized 'who_conf' argument from plugin factory functions.
515c69 435
7141c7 436 - Added ConfigParser-based WhoConfig, implementing the spec outlined at
9238cd 437   http://www.plope.com/static/misc/sphinxtest/intro.html#middleware-configuration-via-config-file,
CM 438   with the following changes:
419946 439
7141c7 440   - "Bare" plugins (requiring no configuration options) may be specified
419946 441      as either egg entry points (e.g., 'egg:distname#entry_point_name') or
TS 442      as dotted-path-with-colon (e.g., 'dotted.name:object_id').
443
7141c7 444   - Therefore, the separator between a plugin and its classifier is now
TS 445     a semicolon, rather than a colon. E.g.::
419946 446
TS 447      [plugins:id_plugin]
448      use = egg:another.package#identify_with_frobnatz
449      frobnatz = baz
450
451      [identifiers]
452      plugins =
453        egg:my.egg#identify;browser
454        dotted.name:identifier
455        id_plugin
456
7141c7 457
779caf 458 0.9.1 (2008-04-27)
7141c7 459 ------------------
779caf 460
9238cd 461 - Fix auth_tkt plugin to be able to encode and decode integer user
CM 462   ids.
779caf 463
7141c7 464
88e646 465 0.9 (2008-04-01)
7141c7 466 ----------------
88e646 467
9238cd 468 - Fix bug introduced in FormPlugin in 0.8 release (rememberer headers
CM 469   not set).
88e646 470
9238cd 471 - Add PATH_INFO to started and ended log info.
d9f046 472
9238cd 473 - Add a SQLMetadataProviderPlugin (in plugins/sql).
d9f046 474
9238cd 475 - Change constructor of SQLAuthenticatorPlugin: it now accepts only
CM 476   "query", "conn_factory", and "compare_fn".  The old constructor
477   accepted a DSN, but some database systems don't use DBAPI DSNs.  The
478   new constructor accepts no DSN; the conn_factory is assumed to do
479   all the work to make a connection, including knowing the DSN if one
480   is required.  The "conn_factory" should return something that, when
481   called with no arguments, returns a database connection.
d9f046 482
9238cd 483 - The "make_plugin" helper in plugins/sql has been renamed
CM 484   "make_authenticator_plugin".  When called, this helper will return a
485   SQLAuthenticatorPlugin.  A bit of helper logic in the
486   "make_authenticator_plugin" allows a connection factory to be
487   computed.  The top-level callable referred to by conn_factory in
488   this helper should return a function that, when called with no
489   arguments, returns a datbase connection.  The top-level callable
490   itself is called with "who_conf" (global who configuration) and any
491   number of non-top-level keyword arguments as they are passed into
492   the helper, to allow for a DSN or URL or whatever to be passed in.
d9f046 493
9238cd 494 - A "make_metatata_plugin" helper has been added to plugins/sql. When
CM 495   called, this will make a SQLMetadataProviderPlugin.  See the
496   implementation for details.  It is similar to the
497   "make_authenticator_plugin" helper.
d9f046 498
7141c7 499
cbe4e3 500 0.8 (2008-03-27)
7141c7 501 ----------------
b5a331 502
9238cd 503 - Add a RedirectingFormIdentifier plugin.  This plugin is willing to
CM 504   redirect to an external (or downstream application) login form to
505   perform identification.  The external login form must post to the
506   "login_handler_path" of the plugin (optimally with a "came_from"
507   value to tell the plugin where to redirect the response to if the
508   authentication works properly).  The "logout_handler_path" of this
509   plugin can be visited to perform a logout.  The "came_from" value
510   also works there.
a400b0 511
9238cd 512 - Identifier plugins are now permitted to set a key in the environment
CM 513   named 'repoze.who.application' on ingress (in 'identify').  If an
514   identifier plugin does so, this application is used instead of the
515   "normal" downstream application.  This feature was added to more
516   simply support the redirecting form identifier plugin.
a400b0 517
7141c7 518
a400b0 519 0.7 (2008-03-26)
7141c7 520 ----------------
a400b0 521
9238cd 522 - Change the IMetadataProvider interface: this interface used to have
CM 523   a "metadata" method which returned a dictionary.  This method is not
524   part of that API anymore.  It's been replaced with an "add_metadata"
525   method which has the signature::
b5a331 526
CM 527     def add_metadata(environ, identity):
528         """
529         Add metadata to the identity (which is a dictionary)
530         """
531
532    The return value is ignored.  IMetadataProvider plugins are now
533    assumed to be responsible for 'scribbling' directly on the identity
534    that is passed in (it's a dictionary).  The user id can always be
535    retrieved from the identity via identity['repoze.who.userid'] for
536    metadata plugins that rely on that value.
537
7141c7 538
a400b0 539 0.6 (2008-03-20)
7141c7 540 ----------------
e35c64 541
9238cd 542 - Renaming: repoze.pam is now repoze.who
cb5426 543
9238cd 544 - Bump ez_setup.py version.
e35c64 545
9238cd 546 - Add IMetadataProvider plugin type.  Chris says 'Whit rules'.
fa9581 547
7141c7 548
3b67e9 549 0.5 (2008-03-09)
7141c7 550 ----------------
db4cf5 551
9238cd 552 - Allow "remote user key" (default: REMOTE_USER) to be overridden
CM 553   (pass in remote_user_key to middleware constructor).
db4cf5 554
9238cd 555 - Allow form plugin to override the default form.
db4cf5 556
9238cd 557 - API change: IIdentifiers are no longer required to put both 'login'
CM 558   and 'password' in a returned identity dictionary.  Instead, an
559   IIdentifier can place arbitrary key/value pairs in the identity
560   dictionary (or return an empty dictionary).
40a968 561
9238cd 562 - API return value change: the "failure" identity which IIdentifiers
CM 563   return is now None rather than an empty dictionary.
40a968 564
9238cd 565 - The IAuthenticator interface now specifies that IAuthenticators must
CM 566   not raise an exception when evaluating an identity that does not
567   have "expected" key/value pairs (e.g. when an IAuthenticator that
568   expects login and password inspects an identity returned by an
569   IP-based auth system which only puts the IP address in the
570   identity); instead they fail gracefully by returning None.
40a968 571
9238cd 572 - Add (cookie) "auth_tkt" identification plugin.
a5b033 573
9238cd 574 - Stamp identity dictionaries with a userid by placing a key named
CM 575   'repoze.pam.userid' into the identity for each authenticated
576   identity.
a5b033 577
9238cd 578 - If an IIdentifier plugin inserts a 'repoze.pam.userid' key into the
CM 579   identity dictionary, consider this identity "preauthenticated".  No
580   authenticator plugins will be asked to authenticate this identity.
581   This is designed for things like the recently added auth_tkt plugin,
582   which embeds the user id into the ticket.  This effectively alllows
583   an IIdentifier plugin to become an IAuthenticator plugin when
584   breaking apart the responsibility into two separate plugins is
585   "make-work".  Preauthenticated identities will be selected first
586   when deciding which identity to use for any given request.
a5b033 587
9238cd 588 - Insert a 'repoze.pam.identity' key into the WSGI environment on
CM 589   ingress if an identity is found.  Its value will be the identity
590   dictionary related to the identity selected by repoze.pam on
591   ingress.  Downstream consumers are allowed to mutate this
592   dictionary; this value is passed to "remember" and "forget", so its
593   main use is to do a "credentials reset"; e.g. a user has changed his
594   username or password within the application, but we don't want to
595   force him to log in again after he does so.
a5b033 596
7141c7 597
247f34 598 0.4 (03-07-2008)
7141c7 599 ----------------
247f34 600
9238cd 601 - Allow plugins to specify a classifiers list per interface (instead
CM 602   of a single classifiers list per plugin).
247f34 603
7141c7 604
fb510d 605 0.3 (03-05-2008)
7141c7 606 ----------------
fb510d 607
9238cd 608 - Make SQLAuthenticatorPlugin's default_password_compare use hexdigest
CM 609   sha instead of base64'ed binary sha for simpler conversion.
fb510d 610
7141c7 611
196bc2 612 0.2 (03-04-2008)
7141c7 613 ----------------
196bc2 614
9238cd 615 - Added SQLAuthenticatorPlugin (see plugins/sql.py).
196bc2 616
7141c7 617
318832 618 0.1 (02-27-2008)
7141c7 619 ----------------
318832 620
9238cd 621 - Initial release (no configuration file support yet).