Andrea Cosentino created CAMEL-26319:
----------------------------------------

             Summary: camel-oauth: InMemorySessionStore should not log session 
identifiers and OAuthCodeFlowCallback should rotate session identifiers on login
                 Key: CAMEL-26319
                 URL: https://issues.apache.org/jira/browse/CAMEL-26319
             Project: Camel
          Issue Type: Bug
          Components: camel-oauth
            Reporter: Andrea Cosentino
            Assignee: Andrea Cosentino
             Fix For: 4.24.0, 4.22.3, 4.18.6


h3. Current behaviour

In {{org.apache.camel.oauth.InMemorySessionStore.createSession(Exchange)}} 
(camel-oauth), the session identifier is logged at INFO level when creating a 
new session:
{code:java}
var sessionId = UUID.randomUUID().toString();
var session = new InMemorySession(sessionId);
sessions.put(sessionId, session);

var msg = exchange.getMessage();
log.info("New OAuthSession: {}", sessionId);

setSessionCookie(msg, session);
{code}

In addition, during the authorization code flow, 
{{OAuthCodeFlowCallback.process(Exchange)}} retrieves the existing session and 
stores the authenticated {{UserProfile}} directly into it without rotating the 
session identifier:
{code:java}
var session = oauth.getOrCreateSession(exchange);
...
var userProfile = oauth.authenticate(...);
session.putUserProfile(userProfile);
{code}

As a result, session identifiers appear in standard application logs, and the 
pre-authentication session identifier continues to identify the authenticated 
session post-login.

h3. Expected behaviour

* {{InMemorySessionStore}} should not emit session identifiers at standard log 
levels (INFO/WARN/ERROR).
* {{OAuthCodeFlowCallback}} should rotate the session identifier upon 
successful authentication, invalidating or replacing the pre-authentication 
identifier and issuing a fresh session cookie with the new identifier.

h3. Change

* In {{InMemorySessionStore}}:
  - Remove session identifier logging from {{createSession()}} (or reduce to 
debug with masked/sanitized details).
  - Provide a session rotation mechanism (e.g., {{rotateSession(...)}} or 
regenerating the session entry) so that an active session can be re-keyed to a 
new identifier and a new cookie can be emitted.
* In {{OAuthCodeFlowCallback}}:
  - Upon receiving the authenticated {{UserProfile}}, rotate the session 
identifier before redirecting to the post-login URL.
* In {{OAuthSessionStore}} interface:
  - Add default rotation/invalidation support if needed for session lifecycle 
handling.

h3. Tests

* Unit test in {{camel-oauth}} verifying that 
{{InMemorySessionStore.createSession()}} does not output the raw session 
identifier to standard logger output.
* Unit test verifying that completing the OAuth callback flow rotates the 
session identifier and invalidates the previous session identifier.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to