Fix OIDC: Add default domain name to groups that are not email addresses

This commit is contained in:
Maurus Decimus
2026-06-16 21:51:48 +02:00
parent 8f627fbd69
commit 3f2c5632b8
33 changed files with 83 additions and 64 deletions

View File

@@ -2,6 +2,17 @@
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
## [0.16.10] - 2026-06-XX
If you are upgrading from v0.16.x, replace the binary (or run `docker pull`). If you are upgrading from v0.15.x and below, please read the [upgrading documentation](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_16.md) for more information on how to upgrade from previous versions.
## Added
## Changed
## Fixed
- OIDC: Add default domain name to groups that are not email addresses.
## [0.16.9] - 2026-06-15
If you are upgrading from v0.16.x, replace the binary (or run `docker pull`). If you are upgrading from v0.15.x and below, please read the [upgrading documentation](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_16.md) for more information on how to upgrade from previous versions.

62
Cargo.lock generated
View File

@@ -1235,7 +1235,7 @@ dependencies = [
[[package]]
name = "common"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"aes-gcm-siv",
"ahash",
@@ -1431,7 +1431,7 @@ checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
[[package]]
name = "coordinator"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"async-nats",
"futures",
@@ -1784,7 +1784,7 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
[[package]]
name = "dav"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"calcard",
"chrono",
@@ -1807,7 +1807,7 @@ dependencies = [
[[package]]
name = "dav-proto"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"calcard",
"chrono",
@@ -2005,7 +2005,7 @@ dependencies = [
[[package]]
name = "directory"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"argon2",
@@ -2257,7 +2257,7 @@ dependencies = [
[[package]]
name = "email"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"aes 0.9.1",
"aes-gcm",
@@ -2364,7 +2364,7 @@ dependencies = [
[[package]]
name = "event_macro"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"proc-macro2",
"quote",
@@ -2882,7 +2882,7 @@ dependencies = [
[[package]]
name = "groupware"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"calcard",
@@ -3164,7 +3164,7 @@ dependencies = [
[[package]]
name = "http"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"async-stream",
"base64 0.22.1",
@@ -3264,7 +3264,7 @@ dependencies = [
[[package]]
name = "http_proto"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"common",
"compact_str",
@@ -3566,7 +3566,7 @@ checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
[[package]]
name = "imap"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"common",
@@ -3593,7 +3593,7 @@ dependencies = [
[[package]]
name = "imap_proto"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"chrono",
@@ -3806,7 +3806,7 @@ dependencies = [
[[package]]
name = "jmap"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"aes-gcm",
"aes-gcm-siv",
@@ -3894,7 +3894,7 @@ dependencies = [
[[package]]
name = "jmap_proto"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"calcard",
@@ -4402,7 +4402,7 @@ dependencies = [
[[package]]
name = "managesieve"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"common",
@@ -4544,7 +4544,7 @@ checksum = "c797b9d6bb23aab2fc369c65f871be49214f5c759af65bde26ffaaa2b646b492"
[[package]]
name = "migration"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"base64 0.22.1",
"common",
@@ -4761,7 +4761,7 @@ dependencies = [
[[package]]
name = "nlp"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"bincode 1.3.3",
@@ -5554,7 +5554,7 @@ dependencies = [
[[package]]
name = "pop3"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"common",
"directory",
@@ -5737,7 +5737,7 @@ dependencies = [
[[package]]
name = "proc_macros"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"proc-macro2",
"quote",
@@ -6369,7 +6369,7 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]]
name = "registry"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"hashify",
@@ -7283,7 +7283,7 @@ dependencies = [
[[package]]
name = "services"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"aes-gcm",
"aes-gcm-siv",
@@ -7541,7 +7541,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "smtp"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"base64 0.22.1",
@@ -7642,7 +7642,7 @@ dependencies = [
[[package]]
name = "spam-filter"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"common",
"compact_str",
@@ -7751,7 +7751,7 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "stalwart"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"common",
"coordinator",
@@ -7759,7 +7759,7 @@ dependencies = [
"directory",
"email",
"groupware",
"http 0.16.9",
"http 0.16.10",
"http_proto",
"imap",
"jemallocator",
@@ -7788,7 +7788,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "store"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"arc-swap",
@@ -8028,7 +8028,7 @@ dependencies = [
[[package]]
name = "tests"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"async-trait",
@@ -8052,7 +8052,7 @@ dependencies = [
"form_urlencoded",
"futures",
"groupware",
"http 0.16.9",
"http 0.16.10",
"http-body-util",
"http_proto",
"hyper",
@@ -8592,7 +8592,7 @@ dependencies = [
[[package]]
name = "trc"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"base64 0.22.1",
@@ -8685,7 +8685,7 @@ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
[[package]]
name = "types"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"blake3",
"compact_str",
@@ -8883,7 +8883,7 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "utils"
version = "0.16.9"
version = "0.16.10"
dependencies = [
"ahash",
"arcstr",

View File

@@ -1,6 +1,6 @@
[package]
name = "common"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
build = "build.rs"

View File

@@ -1,6 +1,6 @@
[package]
name = "coordinator"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "dav-proto"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "dav"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "directory"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -213,7 +213,13 @@ impl OpenIdDirectory {
.as_ref()
.and_then(|groups_claim| claims.get(groups_claim))
.map(extract_string_list)
.unwrap_or_default(),
.unwrap_or_default()
.into_iter()
.map(|group| match &self.config.default_domain {
Some(domain) if !group.contains('@') => format!("{group}@{domain}"),
_ => group,
})
.collect(),
description: self
.config
.claim_name

View File

@@ -1,6 +1,6 @@
[package]
name = "email"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "groupware"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "http_proto"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "http"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -472,9 +472,11 @@ impl ParseHttp for Server {
self.is_http_anonymous_request_allowed(session.remote_ip)
.await?;
let path_email = path.find(|segment| segment.contains('@')).map(|segment| {
percent_decode_str(segment).decode_utf8_lossy().into_owned()
});
let path_email = path
.map(|segment| {
percent_decode_str(segment).decode_utf8_lossy().into_owned()
})
.find(|segment| segment.contains('@'));
return self
.handle_autodiscover_v2_request(req.uri().query(), path_email.as_deref())

View File

@@ -1,6 +1,6 @@
[package]
name = "imap_proto"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "imap"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "jmap_proto"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "jmap"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -7,7 +7,7 @@ homepage = "https://stalw.art"
keywords = ["imap", "jmap", "smtp", "email", "mail", "webdav", "server"]
categories = ["email"]
license = "AGPL-3.0-only OR LicenseRef-SEL"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[[bin]]

View File

@@ -1,6 +1,6 @@
[package]
name = "managesieve"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "migration"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "nlp"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "pop3"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "registry"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "services"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp"
keywords = ["smtp", "email", "mail", "server"]
categories = ["email"]
license = "AGPL-3.0-only OR LicenseRef-SEL"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "spam-filter"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "store"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "trc"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "event_macro"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "types"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "utils"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "proc_macros"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "tests"
version = "0.16.9"
version = "0.16.10"
edition = "2024"
[features]