8000 Releases · sebadob/rauthy · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: sebadob/rauthy

v0.29.4

16 May 09:49
a545447
Compare
Choose a tag to compare

Changes

Custom Attributes via SCIM

Rauthy's SCIM functionality now also adds custom user attributes. These will be added, just like inside the id_token claims, under custom: * as JSON values. These will be added only if the client should receive these attributes defined via the allowed scopes.

This is a non-RFC value, but it should be ignored by any client, that does not understand the custom field. While the rauthy-client has been released with a new version in the meantime, its implementation gives you access to custom attributes, if some exist.

#936

Bugfix

  • It was possible, that Rauthy tried to sync groups via SCIM even if group syncing has been disabled.
    #936
  • The legacy Rauthy logo showed up at the login page in versions 0.29.0 - 0.29.3 for fresh Hiqlite deployments. This was due to a missing, permanent database migration that removes the old logo. This was shadowed by the manual version migration queries that existed during the 0.28 release. This patch version has a programmatic query and will add a permanent migration with the 0.30 release to not introduce breaking changes with a patch level.
    #943

v0.29.3

10 May 10:38
0c2992c
Compare
Choose a tag to compare

Bugfix

  • v0.29.2s fix for the HTTP 302 instead of 200 on /logout broke the logout from the UI without additional id_token_hint.
    #930
  • Form validation for Upstream Auth Provider config did not set some fields to required under certain conditions and would therefore return the backend validation error instead of a nicer way of handling it.
    #931
  • Fixed another DB migration query between Hiqlite and Postgres.
    #932

v0.29.2

09 May 12:30
c29706b
Compare
Choose a tag to compare

Bugfix

  • DB Migrations between Hiqlite and Postgres have not been working as expected since database driver and query reworks with v0.29.
    #919
  • Front-Channel Logout returned HTTP 200 instead of 302 for auto-redirect under certain conditions.
    #920

v0.29.1

07 May 09:02
4ec5cae
Compare
Choose a tag to compare

Bugfix

  • Because of the default admin renaming with 0.29.0, the 2 test admin accounts have not been deleted when starting up a new production instance.
    #909
  • Error logs with an invalid rauthy.cfg have been emitted as tracing logs instead of eprintln, when logging was not initialized yet.
    #910
  • Because of the new session validation rework and additional safety-nets, a login was impossible when SESSION_VALIDATE_IP=false
    #911

v0.29.0

05 May 11:15
0871696
Compare
Choose a tag to compare

Breaking

Postgres: sqlx dropped in favor of tokio-postgres

Internally, quite a big change has happened. sqlx has been completely dropped in favor of tokio-postgres in combination with some other dependencies. This solved a few issues.

sqlx has been blocking updates quite a few times in the past. It pulls in a huge amount of dependencies, even if they are not used, which often block other crates. It's also pretty slow with updates, which means you might be forced to stick with older versions for several months, and it has some other limitations I don't like.

Even though the compile-time checked queries are the best feature of sqlx, they also produced a lot of issues and confusion when other people were trying to build from source, and so on.

The bonus for everyone not working with the code directly is, that tokio-postgres has about half the latency of sqlx in my testing.

The breaking change that comes with this internal change is actually a good one:

You don't specify the DATABASE_URL like before. DATABASE_URL and DATABASE_MAX_CONN have been completely removed. Instead, you now have separate config vars for each part of the URL. This removes the limitation that you could only have alphanumeric characters inside your password (otherwise the URL would be invalid).

One additional thing is, that sqlx silently ignored TLS certificate validation if it failed, which is actually a pretty bad behavior. If you are running a Postgres with self-signed certificates, you need to explicitly allow this.

You now need to provide the following values, if you are using Postgres:

# If you set `HIQLITE=false` and want to use Postgres as your database,
# you need to set the following variables:
PG_HOST=
# default: 5432
#PG_PORT=5432
PG_USER=
PG_PASSWORD=
# default: rauthy
#PG_DB_NAME=rauthy

# If your database uses a self-signed certificate, which cannot
# be verified, you might want to set this to `true`.
# default: false
#PG_TLS_NO_VERIFY=false

# Max DB connections for the Postgres pool.
# default: 20
#PG_MAX_CONN=20

CAUTION: This is a pretty big change, because existing sqlx migrations will be converted manually. Just to be safe, you should probably do a database backup before starting v0.29!

#822

Default Admin change

The default admin has been changed from admin@localhost.de to just admin@localhost. This is due to the fact that localhost.de is a real domain with a valid TLD and it could introduce issues, if these users exist on a Rauthy instance.

If you still had an admin@localhost.de around in your database, this will also be changed even for an existing deployment! You will see a warn! logging during the whole v0.29 release to make you aware of this. After the new version has been started up, your default admin will be admin@localhost.

#866

Additional PoW requirements

If you have been providing your own, custom login UI, be aware of the fact that the LoginRequest + ProviderLoginRequest now require a solved PoW inside the request body. For further information about this, see the notes down below -> Defense in depth;

#883

Internal Metrics now opt-in

The internal /metrics HTTP server is not used by most people, but it has been enabled by default, while using ~10mb of memory in idle and adding the overhead to each API request that metrics are actually collected internally. For this reason, the internal metrics (and therefore also internal Swagger UI) are not opt-in instead of opt-out. If you are using prometheus metrics right now, make sure that you explicitly set

METRICS_ENABLE=true

#876

Removed Custom CA from Auth Providers

The custom root CA option has been removed from Upstream Auth Providers. This was due to performance and efficiency optimizations. There is a new global HTTP client (mentioned below) which will handle custom root CAs and will be used for auth providers as well.

If you are currently using an upstream auth provider with a custom root CA, make sure to add this CA to HTTP_CUST_ROOT_CA_BUNDLE as mentioned further down below`

Changes

OpenID Connect Backchannel Logout

Rauthy now supports OpenID Connect Backchannel Logout.

If downstream clients support it, you can now provide a backchannel_logout_uri in the config view via the Admin UI. Rauthy itself can act as a downstream client for an upstream as well. The default /auth/v1/oidc/logout endpoint now optionally accepts the logout_token and will propagate Backchannel Logouts, if the token is actually coming from a valid, configured upstream auth provider.
Backchannel Logouts will of course also be triggered in other situations like forced session invalidation by an admin, user expiration, or deletion, and so on.

The feature can be seen as in beta state now. Everything has been implemented following the RFC and basic integration tests exist. However, to catch some weird edge cases, it needs testing in the real world as well. If you have any problems using it, please open an issue about it.

There are some new config variables:

#####################################
######## BACKCHANNEL LOGOUT #########
#####################################

# The maximum amount of retries made for a failed backchannel logout.
# Failed backchannel logouts will be retried every 60 - 90 seconds
# from all cluster nodes. The timeout between retries is randomized
# to avoid overloading clients. It will be executed on each cluster
# member to increase the chance of a successful logout in case of
# network segmentations.
# default: 100
#BACKCHANNEL_LOGOUT_RETRY_COUNT=100

# Can be set to `true` to allow plain HTTP backchannel
# logout requests.
# default: false
#BACKCHANNEL_DANGER_ALLOW_HTTP=false

# Can be set to `true` to allow insecure HTTPS logout requests.
# This will disable TLS certificate validation.
# default: false
#BACKCHANNEL_DANGER_ALLOW_INSECURE=false

# The lifetime / validity for Logout Tokens in seconds.
# These Logout Tokens are being generated during OIDC
# Backchannel Logout requests to configured clients.
# The token lifetime should be as short as possible and
# at most 120 seconds.
# default: 30
#LOGOUT_TOKEN_LIFETIME=30

# You can allow a clock skew during the validation of
# Logout Tokens, when Rauthy is being used as a client
# for an upstream auth provider that uses backchannel
# logout.
#
# The allowed skew will be in seconds and a value of
# e.g. 5 would mean, that 5 seconds are added to the
# `iat` and `exp` claim validations and expand the range.
#
# default: 5
#LOGOUT_TOKEN_ALLOW_CLOCK_SKEW=5

# The maximum allowed lifetime for Logout Tokens.
# This value is a security check for upstream auth
# providers. If Rauthy receives a Logout Token, it will
# check and validate, that the difference between `iat`
# and `exp` is not greater than LOGOUT_TOKEN_ALLOWED_LIFETIME.
# This means Rauthy will reject Logout Tokens from clients
# with a way too long validity and therefore poor
# implementations. The RFC states that tokens should
# be valid for at most 120 seconds.
# default: 120
#LOGOUT_TOKEN_ALLOWED_LIFETIME=120

#794
#819

RP Initiated Logout

While implementing OpenID Connect Backchannel Logout, support for RP Initiated Logout has been added as well to provide a complete package.

#794
#806

SCIM

This version brings SCIM support to Rauthy.

You can define a custom SCIM base uri per client. The client must support SCIM v2 and the filter parameter. Groups syncing is optional.

You can also define a group prefix which will act as a filter for the to-be-synced data. For instance, if you define a prefix of myapp:, only the groups starting with it will be synced, like e.g. myapp:admin, myapp:user. Additionally, only users that are assigned to at least one of these filtered groups will by synced, while others are skipped.
The advantage of this is, let's say you have an application with limited seats, or where each existing user costs a license (Gitlab Enterprise would be an example), you need to pay for each registered user. If you now split your users into groups and only your developers need to exist on that instance, you can assign a group like dev:* and only sync the dev: groups via SCIM.

The SCIM impl is not integration tested, as this usually requires an external deployment. For the future, the idea is to implement the client side into the rauthy-client and use this for integration testing against itself. However, I followed the RFC closely and tested all operations manually against https://scim.dev .

Just as for the OIDC Backchannel Logout, this feature can be seen as in beta state now. We need some real world testing next, but I think it should be just fine.

#####################################
############### SCIM ################
#####################################

# If set to `true`, already possibly synced groups / users on a
# SCIM server may be deleted if either sync if disabled further
# down the road.
# Depending on your clients specifically, deleting a group / user
# can have a major impact, like e.g. maybe the user had important
# data inside that application that would be deleted automatically
# as well. Depending on your use case, you may want to handle
# deletions manually.
#
# If set to false, only the `exter...
Read more

v0.28.3

28 Mar 09:07
cd4d314
Compare
Choose a tag to compare

Bugfix

  • The new Admin UI has always added an expires value during the creation of a new user, even if the checkbox was unchecked.
    #797
  • It has been possible to construct a situation in which a housekeeping scheduler for expired magic links could have been deleting newly registered users.
    #798
    #799

v0.28.2

21 Mar 09:13
d77ca45
Compare
Choose a tag to compare

Important

This is a pretty important bugfix update. The 0.28 versions before had an error where the groups config component in the Admin UI has been changed to contain roles after the first render. This means, if you have saved a user in the Admin UI (even without changing groups), the groups might have been changed depending on your setup.

The backend sanitizes any submitted roles / groups on user updates, so only actually existing values can exist, but if you had a roles / groups combination with the exact same naming, like e.g. an admin role and an admin group, it could have been possible that a user ends up with a group assignment he should not have. At the same time, a user might have had some groups removed he had before.

This situation can only occur on users you have updated via the Admin UI with either 0.28.0 or 0.28.1. You should update to 0.28.2 asap and double check group assignments for your users you may have updated with an earlier 0.28 version via the Admin UI.

Bugfix

  • Fixes a bug in the Admin UI / Users view where the content of the groups config component contained roles instead of groups.
    #790

v0.28.1

19 Mar 08:51
ef93ea4
Compare
Choose a tag to compare

Security

CVE-2025-29787

Rauthy itself has not been vulnerable, but he zip dependency pulled in by the Swagger UI as a 3rd party dependency has
been vulnerable when reading files. zip inside the Swagger UI has only been used at build time, never at runtime.
However, the version has been bumped to a non-vulnerable one.

CVE-2025-29787

#785

Changes

Updated Translations

zh and ko translations have received updates. ko is now also available for the Admin UI and has been added to the
FILTER_LANG_ADMIN value from the 0.28.0 release.

#769
#775

Bugfix

  • UI: Fixed and updated some translations to make them more clear
    #779
    #783
  • UI: The Allow Insecure TLS checkbox for upstream auth providers has been shown twice in some situations.
    #780
  • UI: The Invalid Input message has not been reset in some views and situations.
    #781

v0.28.0

13 Mar 08:36
4c95448
Compare
Choose a tag to compare

Breaking

Environment Variable Only Config

If you configured Rauthy via environment variables only, you might have breaking changes with this update.

If a configuration is being made purely via env vars, and a proper rauthy.cfg (at least an empty file) is not being
created and mounted inside the container, the application would actually use demo values as long as they are not
overwritten by env vars manually.

To improve the security out of the box, the container setup has been changed and the demo config has a separate
filename, which will only be parsed when LOCAL_TEST=true is passed in as an env var before app startup.
Setting this value inside the usual rauthy.cfg has no effect.

The insecure local testing values that have been set before (again, with an env vars only setup), can be found here
https://github.com/sebadob/rauthy/blob/v0.27.3/rauthy.deploy.cfg for reference, so you can check, if you would have
breaking changes.

If no rauthy.cfg is ever being created, default values will be used, and you can configure the application safely
with env vars only. If you decide to use both, env vars will keep on having the higher priority over values set inside
the config file, just like it has been before.

#763

Changed header names for session CSRF and password reset tokens

This may concern you, if you have built custom UI parts in front of Rauthy.

The Headers names for the session and password reset CSRF tokens have been changed and now contain a leading x-.
This make the API more clean, since custom headers should be marked with a leading x-.

  • csrf-token -> x-csrf-token
  • pwd-csrf-token -> x-pwd-csrf-token

#749

Custom Client Branding

With the migration to Svelte 5 (mentioned below), the way theming is done has been changed from the ground up in such
a way, that it is not possible to migrate possibly existing custom client branding. This means that you will lose and
need to re-create a possibly existing custom branding with this version.

Paginated Users / Sessions

This may only concern you if you are doing direct API calls to GET users or sessions on a very big Rauthy instance
in combination with server side pagination. When you added backwards=true before, the offset of a single page has
been added automatically in the backend. This is not the case anymore to provide more flexibility with this API. You
need to add the offset yourself now while going backwards.

#732

Security

CVE-2025-24898

Even though the vulnerable code blocks have not been used directly, the openssl and openssl-sys dependencies have
been bumped to fix CVE-2025-24898.

#717

GHSA-67mh-4wv8-2f99

This could have only been affecting dev environments, not any production build,
but GHSA-67mh-4wv8-2f99 has been fixed by bumping frontend
dependencies.

#735

Changes

Svelte 5 Migration

The whole UI has been migrated to Svelte 5 + Typescript. Many parts and components have been re-written from the ground
up to provide a better DX and maintainability in the future.

This whole migration comes with a lot of changes, most of them under the hood regarding performance and efficiency.
There are so many changes, that it does not make much sense to list them all here, but the TL;DR is:

  • The whole UI is now based on Svelte 5 + TS with improved performance.
  • The DX and UX has been improved a lot.
  • Accessibility has been improved by a huge margin.
  • Rauthy now comes with a light and dark mode, even for the custom client branding login site.
  • We have a new logo, which makes it a lot easier to identify Rauthy in a tab overview and so on.
  • The whole UI is now fully responsive and usable even down to mobile devices.
  • The whole design of the UI has been changed in a way that most components and payloads can now be cache infinitely.
  • The engine for server side rendering of the static HTML content has been migrated
    from askama to rinja (based on askama with
    lots of improvements).
  • The backend now comes with caching and dynamic pre-compression of all dynamic SSR HTML content.
  • The way i18n is done has been changed a lot and moved from the backend into a type-checked frontend file to make
    it a bit easier to get into and provide caching again.
  • The admin UI can now be translated as well. The i18n for common user sites and the admin UI are split for reduced
    payloads for most users. Currently, only en and de exist for the Admin UI, but these can be extended easily in
    the future as soon as someone provides a PR. They are also independent with the only requirement that a common i18n
    must exist before an admin i18n. (Translations for E-Mails are still in the backend of course)
  • Part of the state for the Admin UI has been moved into the URL, which makes it possible to copy & paste most links
    and actually end up where you were before.

NOTICE: Since the whole UI has basically been re-written, or at least almost every single line has been touched, the
new UI can be seen as in beta state. If you have any problems with it, please open an issue.

#642

User Pictures / Avatars

It is now possible to upload an avatar / picture for each user. This can be done via the account dashboard.

Rauthy uses the term picture to match the OIDC RFC spec. If the scope during login includes profile and the user
has a picture, the picture claim will be included in the id_token and will contain the URL where the user picture
can be found.
User Picture URLs are "safe" to be used publicly, and they contain 2 cryptographically random secure IDs. This makes it
possible to even make them available without authentication for ease of use. By default, a session / API Key / token
is required to fetch them, but you can opt-out of that.

For storage options, the default is database. This is not ideal and should only be done for small instances with maybe
a few hundred users. They can fill up the database pretty quickly, even though images are optimized after upload, they
will end up somewhere in the range of ~25 - 40kB each.
For single instance deployments, you can use local file storage, while for HA deployments, you should probably use
an S3 bucket to do so.

Uploading user pictures can be disabled completely by setting PICTURE_STORAGE_TYPE=disabled

The following new config variables are available:

#####################################
########## User Pictures ############
#####################################

# The storage type for user pictures.
# By default, they are saved inside the Database, which is not ideal.
# If you only have a couple hundred users, this will be fine, but
# anything larger should use an S3 bucket if available. For single
# instance deployments, file storage to local disk is available
# as well, but this must not be used with multi replica / HA
# deployments.
# Images will ba reduced in size to max 192px on the longest side.
# They most often end up between 25 - 40kB in size.
#
# Available options: db file s3 disabled
# Default: db
#PICTURE_STORAGE_TYPE=db

# If `PICTURE_STORAGE_TYPE=file`, the path where pictures will be
# saved can be changed with this value.
# default: ./pictures
#PICTURE_PATH="./pictures"

# Access values for the S3 bucket if `PICTURE_STORAGE_TYPE=s3`.
# Not needed otherwise.
#PIC_S3_URL=https://s3.example.com
#PIC_S3_BUCKET=my_bucket
#PIC_S3_REGION=example
#PIC_S3_KEY=s3_key
#PIC_S3_SECRET=s3_secret
# default: true
#PIC_S3_PATH_STYLE=true

# Set the upload limit for user picture uploads in MB.
# default: 10
#PICTURE_UPLOAD_LIMIT_MB=10

# By default, user pictures can only be fetched with a valid
# session, an API Key with access to Users + Read, or with a
# valid token for this user. However, depending on where and
# how you are using Rauthy for your user management, you may
# want to make user pictures available publicly without any
# authentication.
#
# User Picture URLs are "safe" in a way that you cannot guess
# a valid URL. You will need to know the User ID + the Picture
# ID. Both values are generated cryptographically secure in the
# backend during creation. The Picture ID will also change
# with every new upload.
#
# default: false
#PICTURE_PUBLIC=false

#743

Static HTML + prepared queries added to version control

To make it possible to build Rauthy from source in environments like e.g. FreeBSD, all pre-built static HTML files have
been added to version control, even though they are built dynamically each time in release pipelines. Additionally, all
DB queries used by sqlx are added to version control as well.

The reason is that the UI cannot be built in certain environments. With these files checked-in, you can build from
source with just cargo build --release by having Rust available. You don't need to build the UI or have a Postgres
running anymore, if you only care about building from source.

I18n - Korean

Korean has been added to the translations for all user-facing UI parts.
#670

Filter I18n UI Languages

Since it is likely that the available translations will expand in the future and you may not need or
want to show all options to the users, because you maybe only have a local / regional deployment, you
can now apply a filter to the Languages that are shown i...

Read more

v0.27.3

30 Dec 08:42
0b870d5
Compare
Choose a tag to compare

Changes

Upstream Identity Providers

To provide additional compatibility for some upstream providers like Active Directory Federation Severices, some changes have been applied to Rauthy's behavior.

The first thing is that the HTTP client used for upstream Logins does not force TLS v1.3 anymore, but also allows TLS v1.2. Both v1.2 and v1.3 are considered being secure by current standards. This is necessary, because some OSes like Windows Server 2019 do not support TLS 1.3.

The second change is for the way upstream providers are configured. The behavior until now was, that Rauthy added the client redentials as both Basic Authentication in headers, and in the body for maximum compatibility. However, some IdP'S (like ADFS for nstance) complain about this and only expect it in one place. To make this happen, there are 2 new fields for the upstream IdP onfiguration:

  • client_secret_basic: bool
  • client_secret_post: bool

These are available as switches in the Admin UI for each upstream provider. To not introduce breaking changes, all possibly existing configurations will have both options enabled like it has been up until now.

#659

Note

Even though this changes the request and response objects on the API, this change is NOT being handled as a breaking change. API clients are forbidden to modify upstream IdPs for security reasons, which means this change should only affect the Rauthy Admin UI.

Gitlab as Upstream IdP

Gitlab is special and does its own, annoying thing to make it usable as an upstream IdP. An issue has been found when someone tries to log in with no publicly shown email address. In this worst case scenario, a successful login via Github while retrieving all necessary information (email is mandatory for Rauthy), you need to do 3 different API requests.

This version also makes it possible to log in via Github IdP with an account with only private email addresses. A different scope for the login is necessary to make this possible. The template in the UI has been updated, but this will not affect existing Github IdP Providers. If you are currently using Github as upstream IdP, please change the scope manually from read:user to user:email.

#665

Bugfix

  • During the deletion of a custom scope, that has been mapped to only a clients default scopes, but not the free ones, the mapping would be skipped during the whole client cleanup and end up being left-over after the deletion, which needed a manual cleanup afterward.
    #663
0