Skip to content

JAMES-4195 Add JMAP OIDC authentication strategy#3080

Open
quantranhong1999 wants to merge 11 commits into
apache:masterfrom
quantranhong1999:james-port-oidc-jmap-auth
Open

JAMES-4195 Add JMAP OIDC authentication strategy#3080
quantranhong1999 wants to merge 11 commits into
apache:masterfrom
quantranhong1999:james-port-oidc-jmap-auth

Conversation

@quantranhong1999

Copy link
Copy Markdown
Member

No description provided.

Adds OIDC token value objects, cache configuration, cache interface, Caffeine cache implementation, and cache contract tests.
Adds JMAP OIDC configuration parsing, userinfo/introspection resolution, bearer authentication strategy, challenge realm override support, and focused unit tests.
@Arsnael

Arsnael commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

09:39:33,285 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:compile (default-compile) on project apache-james-backends-redis: Compilation failure
09:39:33,285 [ERROR] /home/jenkins/jenkins-agent/workspace/james_ApacheJames_PR-3080/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisReactiveCommandsFactory.java:[77,39] cannot find symbol
09:39:33,285 [ERROR] symbol: variable RedisConfigurationUtils
09:39:33,285 [ERROR] location: class org.apache.james.backends.redis.RedisReactiveCommandsFactory
09:39:33,285 [ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:compile (default-compile) on project apache-james-backends-redis: Compilation failure
/home/jenkins/jenkins-agent/workspace/james_ApacheJames_PR-3080/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisReactiveCommandsFactory.java:[77,39] cannot find symbol
symbol: variable RedisConfigurationUtils
location: class org.apache.james.backends.redis.RedisReactiveCommandsFactory

Adds the non-Guice Redis OIDC token cache implementation for JMAP, Redis key prefix customization, Redis command adapter, configuration parsing, and real Redis standalone/sentinel/cluster tests.
Adds the non-Guice WebAdmin JMAP route for OIDC backchannel logout and its Guice route binding module.
Adds Guice modules for JMAP OIDC resolver/cache binding, Redis cache binding, default James Redis key prefix, optional cache implementation selection, and optional app wiring.
Adds memory, postgres, and distributed JMAP OIDC authentication integration coverage, including Redis cache wiring for postgres/distributed.
Documents JMAP OIDC properties, sample configuration, cache behavior, Redis fallback, and backchannel logout.
@quantranhong1999 quantranhong1999 force-pushed the james-port-oidc-jmap-auth branch from 2601ca0 to b51214d Compare July 2, 2026 09:55
@quantranhong1999

Copy link
Copy Markdown
Member Author

common/redis/src/main/java/org/apache/james/backends/redis/RedisReactiveCommandsFactory.java:[77,39] cannot find symbol

Should be fixed now ^^

@Arsnael Arsnael left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :)

Comment thread server/container/guice/protocols/jmap-redis/pom.xml Outdated
Comment thread server/protocols/jmap/src/main/java/org/apache/james/jmap/oidc/Sid.java Outdated
Shared OIDC token cache contracts and model now live in `data-api`, the
Caffeine implementation lives in `data-memory`, and the Redis implementation
lives in `data-redis`. Keep `server/protocols/jmap` focused on JMAP
authentication/configuration and move endpoint-backed token resolution to
`server/protocols/jwt`.
 And drop dedicated app's configuration for JMAP OIDC enabled.
Move OIDC cache Guice bindings out of protocol-specific Guice modules.

Redis OIDC cache wiring now lives under `guice/data-redis`.
The Caffeine OIDC cache binding now lives under `guice/memory`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JAMES-4195 Move OIDC implem within James

3 participants