Skip to content
Snippets Groups Projects
  1. Sep 16, 2024
  2. Aug 12, 2024
    • Julian's avatar
      Fix spinner style in dark mode · c0dfb38a
      Julian authored
      c0dfb38a
    • eNBeWe's avatar
      Fix OIDC token endpoint crash on Debian Buster/Bullseye · 23b7736a
      eNBeWe authored and Julian's avatar Julian committed
      
      The return type of jwt.encode() changed from bytes in v1.x (Buster/Bullseye)
      to str in v2.x (Bookworm). This let json.dumps crash on Buster und Bullseye
      with "TypeError: Object of type bytes is not JSON serializable".
      
      Flask v1.x (Buster/Bullseye) automatically uses simplejson.dumps instead of
      json.dumps if it is installed. simplejson.dumps auto-converts bytes to str per
      default. simplejson also happend to be installed in our CI images. This
      prevented the bug from surfacing in CI tests. We removed simplejson from our
      CI images in an external change.
      
      Co-authored-by: default avatarJulian Rother <julian@cccv.de>
      23b7736a
  3. May 18, 2024
  4. Mar 25, 2024
  5. Mar 24, 2024
  6. Mar 21, 2024
    • Julian's avatar
      OpenID Connect Core 1.0 and Discovery 1.0 support · edd4f4ca
      Julian authored
      Limited to OpenID provider conformance profiles "Basic" and "Config":
      
      - Support for features mandatory to implement for all OpenID Providers,
        not the feature set for Dynamic OpenID Providers
      - Only Authorization Code Flow, no support for Implicit/Hybrid Flow
      - Only code response type, no support for token/id_token
      - Server metadata is served at /.well-known/openid-configuration
      
      Additional/optional features:
      
      - Support for "claims" parameter
      - Support for standard scopes "profile" and "email"
      - Support for non-standard scope/claim "groups" (in violation of RFC 9068)
      
      Compatability with existing (working) uffd client setups: Authorization
      requests without the "openid" scope behave the same as before  Prior to this
      change authorization requests with the "openid" scope were rejected by uffd.
      
      This change adds direct dependencies to pyjwt and cryptography. Prior to this
      change both were already transitive dependencies of oauthlib.
      edd4f4ca
  7. Mar 18, 2024
  8. Feb 26, 2024
    • Julian's avatar
      Fix autocomplete behaviour in Firefox · ccc90a8f
      Julian authored
      Firefox autofills all type="password" inputs with passwords from its built-in
      password store. This breaks usability of admin pages.
      
      This change fixes that by adding autocomplete="new-password" to these inputs.
      It also adds appropriate autocomplete attributes to other forms/inputs to
      improve autocomplete behaviour across browsers:
      
      - autocomplete="off" on all non-login/signup/selfservice forms
      - autocomplete="new-password" or autocomplete="current-password" on all
        type="password" inputs to workaround Firefox's misdetection
      - autocomplete="username"/"email"/"nickname" on login/signup/selfservice inputs
        wherever appropriate
      - Avoid type="password" where possible (e.g. on readonly fields)
      ccc90a8f
  9. Feb 23, 2024
  10. Jan 29, 2024
  11. Nov 08, 2023
  12. Nov 07, 2023
    • Julian's avatar
      Prevent TOTP code reuse · 7a94d7de
      Julian authored
      Time-based one-time password (TOTP) codes are only valid for a short period
      of time. In addition they are meant to be single-use to make them more
      resistant against phishing and eavesdropping (e.g. keyloggers). Prior to this
      change uffd did not keep track of used codes and thus did not prevent code
      reuse.
      7a94d7de
  13. Oct 22, 2023
    • Julian's avatar
      Use Debian Bookworm for CI builds · 409d7e66
      Julian authored
      - Fix apt package build on Bookworm
      - Adapt babel.cfg to jinja 3.x.x and break compatability with older versions
    • Julian's avatar
      Debian Bookworm support · 0d870ee1
      Julian authored
      - Add CI tests for Bookworm
      - Disable pylint deprecation warnings for crypt
      - Mitigate Flask changes that broke a few tests
      - Set create_constraint=True for Booleans/Enums to mitigate SQLAlchemy changes
      - Mitigate new Alembic CHECK constraint behaviour in batch mode
      0d870ee1
  14. Oct 19, 2023
  15. Nov 22, 2022
  16. Nov 13, 2022
  17. Nov 08, 2022
  18. Nov 06, 2022
    • Julian's avatar
      Add per-service setting for testing remailer · 05f68ec8
      Julian authored
      This setting is more flexible than the existing REMAILER_LIMIT_TO_USERS config
      option. The config option is therefore deprecated and will be removed in the
      next major version.
      05f68ec8
  19. Nov 04, 2022
    • Julian's avatar
      Cleanup CI tests · b5c27f1c
      Julian authored
      Turns check_migrations.py into a normal test case. Speeds up pipeline by
      making html5validator use the artifacts from tests:buster:sqlite instead of
      running the tests on its own.
      b5c27f1c
    • Julian's avatar
      Force charset/collation on MariaDB and enable CI tests · 91ba4a6f
      Julian authored
      Uffd now requires that MariaDB databases have utf8mb4 charset and
      utf8mb4_nopad_bin collation. The collation was chosen for consistency with
      SQLite's BINARY collation.
      91ba4a6f
  20. Nov 03, 2022
    • Julian's avatar
      New UID/GID allocation approach · 53c06069
      Julian authored
      Previously Unix UIDs/GIDs were allocated by using the highest used ID + 1.
      This caused ID reuse when the newest user/group was deleted. In addition, the
      implementation did not work on MariaDB (at all, it was not possible to create
      users/groups).
      
      The new approach accounts for all IDs ever used regardless of whether or not
      users/groups are deleted. It always allocates the lowest ID in the configured
      range that was never used.
      
      Aside from the different allocation algorithm, this change introduces a
      generic locking mechanism and prerequisites for testing migration scripts.
      53c06069
  21. Oct 25, 2022
    • Julian's avatar
      Unique email addresses · 620cf9ab
      Julian authored
      Enforces uniqueness of (verified) email addresses across all users. Email
      addresses are compared case-insensitivly and Unicode-normalized. The new
      unique constraints are disabled by default and can be enabled with a CLI
      command. They are planned to become mandatory in uffd v3.
      
      A lot of software does not allow multiple users to share the same email
      address. This change prevents problems with such software.
      
      To enable this feature run the command:
      
        uffd-admin unique-email-addresses enable
      
      The commands reports any issues (e.g. existing duplicate addresses) that
      prevent enabling the feature.
      
      This change also introduces a generic mechanism to store feature flags in the
      database and improves error handling for login name constraint violations.
      620cf9ab
  22. Oct 24, 2022
    • Julian's avatar
      Run CI tests and build jobs simultaneously · 17b10ae9
      Julian authored
      17b10ae9
    • Julian's avatar
      Fix CI regression from 0bd26ee8 (Restructure tests) · 8261b723
      Julian authored
      0bd26ee8 added __init__.py files to the tests subdirectory. This had two
      unwanted side-effects:
      
      1. setuptools.find_packages() recognised the tests as a package, so they were
         included in the pip and Debian packages.
      2. The Debian package build process with dh_python automatically runs tests
         with unittest. Unittest's test discovery (in contrast to pytest) only works
         if __init__.py files exist, so this step did not do anything in the past.
         Now, failing tests caused the whole CI pipeline to fail very early without
         the helpful information provided by later stages.
      
      This change disables running any tests during the Debian package build. It also
      explicitly sets the package list to "uffd".
      8261b723
  23. Oct 22, 2022
    • Julian's avatar
      Restructure tests · 0bd26ee8
      Julian authored
      Restructure tests into views/models/commands subdirectories to mirror the new
      source tree structure introduced with ac731bf4 (Restructure source tree).
      0bd26ee8
  24. Oct 20, 2022
    • Julian's avatar
      Remailer address format v2 · 879a04c5
      Julian authored
      Deprecates old case-sensitive format. Some software out there stores email
      addresses converted to lower case, breaking v1 remailer addresses. The new
      format is case-insensitive and generally more robust.
      
      Uffd continues to use and support the v1 format for services setup before
      this change. Support for the old format is planned to be remove in uffd v3.
      It is possbile to gradually migrate services to the new format with a service
      setting in the admin interface.
      
      Also fixes compatability issue with very recent SQLAlchemy versions introduced
      by b391e176 (whens parameter of case function).
      879a04c5
  25. Oct 19, 2022
    • Julian's avatar
      Per-service email preferences · b391e176
      Julian authored
      Also fixes a minor email-related bug in the admin interface and bad
      texts/translations in the selfservice UI.
      b391e176
  26. Aug 28, 2022
  27. Aug 27, 2022
    • nd's avatar
      Add prometheus metric endpoint at /metrics · 76dbf7b0
      nd authored
      Access control is done via normal api credentials.
      See README.md for details.
      Adds an optional dependency on python3-prometheus-client.
      76dbf7b0
  28. Aug 22, 2022
    • Julian's avatar
      Introduce ServiceUser · 6337c591
      Julian authored
      Preperation for future features that require per-service user settings
      or state, e.g. stateful sync or service-specific email settings.
      
      The additional JOIN of ServiceUser degrades getusers API performance
      by 30-50%. For API calls that return many users, this is compensated by
      an otherwise unrelated optimization (selectinload instead of joinedload).
      6337c591
Loading