github sebadob/rauthy v0.16.0

latest releases: v0.25.0, v0.24.1, v0.24.0...
11 months ago

Breaking

This version does modify the database and is therefore not backwards compatible with any previous version.
If you need to downgrade vom v0.16 and above, you will only be able to do this via by applying a DB Backup.

New Features

User Expiry

It is now possible to limit the lifetime of a user.
You can set an optional expiry date and time for each user. This enables temporary access, for instance in
a support case where an external person needs access for a limited time.

Once a user has expired, a few things will happen:

  • The user will not be able to log in anymore.
  • As soon as the scheduler notices the expiry, it will automatically invalidate all possibly existing
    sessions and refresh tokens for this user. How often the scheduler will run can be configured with the
    SCHED_USER_EXP_MINS variable. The default is 'every 60 minutes' to have a good balance between security
    and resource usage. However, if you want this to be very strict, you can adjust this down to something like
    '5 minutes' for instance.
  • If configured, expired users can be cleaned up automatically after the configured time.
    By default, expired users will not be cleaned up automatically. You can enable this feature with the
    SCHED_USER_EXP_DELETE_MINS variable.

WEBAUTHN_NO_PASSWORD_EXPIRY

With this new config variable, you can define, if users with at least one valid registered passkey will
have expiring passwords (depending on the current password policy), or not.
By default, these users do not need to renew their passwords like it is defined in the password policy.

Peer IP's for sessions -> SESSION_VALIDATE_IP

When a new session is being created, the peer / remote IP will be extracted and saved with the session
information. This peer IP can be checked with each access and the session can be rejected, if this IP
has changed, which will force the user to do a new login.

This will of course happen if a user is "on the road" and uses different wireless networks on the way,
but it prevents a session hijack and usage from another machine, if an attacker has full access to the
victims machine and even can steal the encrypted session cookie and(!) the csrf token saved inside the
local storage. This is very unlikely, since the attacker would need to have full access to the machine
anyway already, but it is just another security mechanism.

If this IP should be validated each time can be configured with the new SESSION_VALIDATE_IP variable.
By default, peer IP's will be validated and a different IP for an existing session will be rejected.

Prometheus metrics exporter

Rauthy starts up a second HTTP Server for prometheus metrics endpoint and (optional) SwaggerUI.
By default, the SwaggerUI from the Docs link in the Admin UI will not work anymore, unless you
specify the SwaggerUI via config to be publicly available. This just reduces the possible attack
surface by default.

New config variables are:

# To enable or disable the additional HTTP server to expose the /metrics endpoint
# default: true
#METRICS_ENABLE=true

# The IP address to listen on for the /metrics endpoint.
# You do not want to expose your metrics on a publicly reachable endpoint!
# default: 0.0.0.0
#METRICS_ADDR=0.0.0.0

# The post to listen on for the /metrics endpoint.
# You do not want to expose your metrics on a publicly reachable endpoint!
# default: 9090
#METRICS_PORT=9090

# If the Swagger UI should be served together with the /metrics route on the internal server.
# It it then reachable via:
# http://METRICS_ADDR:METRICS_PORT/docs/v1/swagger-ui/
# (default: true)
#SWAGGER_UI_INTERNAL=true

# If the Swagger UI should be served externally as well. This makes the link in the Admin UI work.
#
# CAUTION: The Swagger UI is open and does not require any login to be seen!
# Rauthy is open source, which means anyone could just download it and see on their own,
# but it may be a security concern to just expose less information.
# (default: false)
#SWAGGER_UI_EXTERNAL=false

User Verification status for Passkeys

For all registered passkeys, the User Verification (UV) state is now being saved and optionally checked.
You can see the status for each device with the new fingerprint icon behind its name in the UI.

New config variable:

# This feature can be set to 'true' to force User verification during the Webauthn ceremony.
# UV will be true, if the user does not only need to verify its presence by touching the key,
# but by also providing proof that he knows (or is) some secret via a PIN or biometric key for
# instance. With UV, we have a true MFA scenario where UV == false (user presence only) would
# be a 2FA scenario (with password).
#
# Be careful with this option, since Android and some special combinations of OS + browser to
# not support UV yet.
# (default: false)
#WEBAUTHN_FORCE_UV=true

Passkey Only Accounts

This is the biggest new feature for this release. It allows user accounts to be "passkey only".

A passkey only account does not have a password. It works only with registered passkeys with
forced additional User Verification (UV).

Take a look at the updated documentation for further information:
Passkey Only Accounts

New E-Mail verification flow

If an already existing user decides to change the E-Mail linked to the account, a new verification
flow will be started:

  • A user changes the E-Mail in the Account view.
  • The E-Mail will not be updated immediately, but:
    • A verification mail will be sent to the new address with an expiring magic link.
    • After the user clicked the link in the mail, the new address will be verified.
  • Once a user verifies the new E-Mail:
    • The address will finally be updated in the users profile.
    • Information E-Mails about the change will be sent to the old and the new address

EMAIL_SUB_PREFIX config variable

This new variable allows you to add an E-Mail subject prefix to each mail that Rauthy sends out.
This makes it easier for external users to identify the email, what it is about and what it is
doing, in case the name 'Rauthy' does not mean anything to them.

# Will be used as the prefix for the E-Mail subject for each E-Mail that will be sent out to a client.
# This can be used to further customize your deployment.
# default: "Rauthy IAM"
EMAIL_SUB_PREFIX="Rauthy IAM"

New nicely looking error page template

In a few scenarios, for instance wrong client information for the authorization code flow or
a non-existing or expired magic link, Rauthy now does not return the generic JSON error response,
but actually a translated HTML page which informs the user in a nicer looking way about the problem.
This provides a way better user experience especially for all Magic Link related requests.

Rauhty DB Version check

This is an additional internal check which compares the version of the DB during startup and
the App version of Rauthy itself. This makes it possible to have way more stable and secure
migrations between versions in the future and helps prevent user error during upgrades.

Changes

Images

Postgres

ghcr.io/sebadob/rauthy@sha256:874182000202f09f4161b95929c72daf8d3a6532fa7e65b86d140e12fe82ade5
sdobedev/rauthy@sha256:874182000202f09f4161b95929c72daf8d3a6532fa7e65b86d140e12fe82ade5

SQLite

ghcr.io/sebadob/rauthy@sha256:8801d043d2d4483d747d05c6f9a1489db84bd684c8769af30681958885d374da
sdobedev/rauthy@sha256:8801d043d2d4483d747d05c6f9a1489db84bd684c8769af30681958885d374da

Don't miss a new rauthy release

NewReleases is sending notifications on new releases.