skillfed

repoze.who

repoze.who is an identification and authentication framework for WSGI.

repoze-who v3.1.0 167.4K downloads/30d#10,471 on PyPI
Permissive license BSD-derived (http://www.repoze.org/LICENSE.txt) AGING released

What it is and what it does

repoze.who is a WSGI-based identification and authentication framework inspired by Zope's Pluggable Authentication Service. It sits between your web application and the WSGI server, extracting user identity from requests and managing login/logout flows through pluggable components. The framework handles the 'who are you' question but deliberately leaves authorization (what users can do) to your application.

You can deploy it as WSGI middleware wrapping your application or use its API directly within your code. It depends on WebOb for HTTP request/response handling and zope.interface for plugin contracts. On Python 3.13 or higher, legacy-cgi is required so WebOb works. The package supports Python 3.9 through 3.13 and has been stable since its early releases, though updates are infrequent.

Use it for:

  • Add authentication to a legacy or custom WSGI application without rewriting the entire auth layer.
  • Integrate multiple authentication methods (cookies, form-based, htpasswd files) into a single WSGI middleware stack.
  • Delegate user identification to repoze.who middleware while your application focuses solely on authorization and business logic.
  • Migrate authentication from Zope 2's PAS to a standalone WSGI framework that works with any WSGI-compatible web stack.
  • Build a multi-tenant WSGI application where different auth plugins handle different user populations.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

repoze.who is an identification and authentication framework for WSGI applications, configurable as middleware or an API to handle user identification without providing authorization logic.

Yes, if you are building or maintaining a WSGI application that needs pluggable authentication and you accept infrequent updates. The package is stable, has no known vulnerabilities, and supports modern Python versions. It is not suitable if you need active development, frequent security patches, or integration with modern async frameworks (it is WSGI-only, not ASGI).

Install

repoze-who on PyPI

pip

pip install repoze-who

uv

uv add repoze-who

poetry

poetry add repoze-who

Installing repoze.who

Before you install

Low install friction with a pure-Python wheel. Maintenance status is aging—last release was 538 days ago—but the package is marked Production/Stable and supports current Python versions (3.9–3.13). No known vulnerabilities.

License in practice

BSD-derived permissive license allows use in most commercial and open-source projects with minimal restrictions; consult the license text at http://www.repoze.org/LICENSE.txt for exact terms.

Quickstart

pip install repoze.who

from repoze.who.middleware import IdentificationMiddleware
from repoze.who.plugins.auth_tkt import AuthTktCookiePlugin

plugin = AuthTktCookiePlugin(secret='my-secret')
app_with_auth = IdentificationMiddleware(app, [plugin])

Requires Python 3.9 or higher; on Python 3.13 or higher, legacy-cgi must be installed for WebOb compatibility.

Verify before relying

  • Whether the aging maintenance status (538 days since last release) affects real-world compatibility with recent WSGI frameworks or if the package is stable-by-design.
  • Whether the four runtime dependencies introduce any transitive security or compatibility concerns beyond what the fact sheet shows.

Package facts

License BSD-derived (http://www.repoze.org/LICENSE.txt) (permissive)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies 4 — WebOb, zope.interface, setuptools, legacy-cgi
Maintenance aging — 538 days since the last release
First released
Downloads 167,409/month — #10,471 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: repoze.who-3.1.0-py3-none-any.whl

Keywords: web, application, server, wsgi, zope

Development Status :: 5 - Production/StableIntended Audience :: DevelopersProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Internet :: WWW/HTTPTopic :: Internet :: WWW/HTTP :: Dynamic ContentTopic :: Internet :: WWW/HTTP :: WSGITopic :: Internet :: WWW/HTTP :: WSGI :: Application

Tags

wsgi authentication middlewareuser identification frameworkpluggable authentication servicewsgi identity managementweb application authenticationrepoze authenticationwsgi user login
wsgi-middlewareauthenticationlegacy-framework

More WWW/HTTP packages