Skip to content

Conversation

@ArturKarbone
Copy link
Collaborator

@ArturKarbone ArturKarbone commented Jan 22, 2026

A first draft of sequence diagram
image

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request adds comprehensive documentation of the authentication and token handling flow using a Mermaid sequence diagram. The diagram illustrates the interactions between the React frontend, YARP proxy, Token Handler middleware, Hybrid Cache, Keycloak IdP, and Backend API.

Changes:

  • Added a new "Sequence Diagram of the Flow" section to README.md
  • Documents three main flows: Initial Authentication, Subsequent API Calls, and Token Refresh
  • Provides detailed step-by-step visualization of the OAuth/OIDC authentication process

TokenHandler->>API: 19. Proxied request with Bearer token
API->>API: 20. Validate JWT token
API->>TokenHandler: 21. API response
TokenHandler->>Browser: 22. Response #40;without tokens#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.

Note over Browser,API: Token Refresh #40;if needed#41;

Browser->>YARP: 23. API request #40;expired token#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
```mermaid

sequenceDiagram
participant Browser as Frontend #40;React#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
YARP->>Keycloak: 5. OIDC Authorization Request
Keycloak->>Browser: 6. Login page
Browser->>Keycloak: 7. Submit credentials
Keycloak->>YARP: 8. Authorization code #40;callback#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
Keycloak->>YARP: 8. Authorization code #40;callback#41;

Note over YARP,Keycloak: Token Exchange
YARP->>Keycloak: 9. Exchange code for tokens<br/>#40;OnAuthorizationCodeReceived#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
Keycloak->>YARP: 10. Access + Refresh tokens

Note over YARP,Cache: Token Storage
YARP->>Cache: 11. Store tokens with session-id<br/>#40;OnTokenValidated#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
API->>TokenHandler: 21. API response
TokenHandler->>Browser: 22. Response #40;without tokens#41;

Note over Browser,API: Token Refresh #40;if needed#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
participant YARP as BFF/YARP Proxy
participant TokenHandler as Token Handler Middleware
participant Cache as Hybrid Cache
participant Keycloak as Keycloak #40;IdP#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.

Note over YARP,Cache: Token Storage
YARP->>Cache: 11. Store tokens with session-id<br/>#40;OnTokenValidated#41;
YARP->>Browser: 12. Set session-id cookie #40;HttpOnly, Secure#41;
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entities are being used instead of regular parentheses. In Mermaid diagrams, you should use regular parentheses instead of HTML entities. Replace #40; with ( and #41; with ).

Copilot uses AI. Check for mistakes.
YARP->>TokenHandler: 15. AuthenticationHeaderSubstitutionMiddleware
TokenHandler->>Cache: 16. Retrieve tokens by session-id
Cache->>TokenHandler: 17. Return OAuthTokenResponse
TokenHandler->>TokenHandler: 18. Add Authorization: Bearer {#35;access_token{#35;}
Copy link

Copilot AI Jan 22, 2026

Choose a reason for hiding this comment

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

HTML entity {#35;} is being used instead of a regular hash symbol. In Mermaid diagrams, you should use # directly instead of HTML entities.

Suggested change
TokenHandler->>TokenHandler: 18. Add Authorization: Bearer {#35;access_token{#35;}
TokenHandler->>TokenHandler: 18. Add Authorization: Bearer #access_token#

Copilot uses AI. Check for mistakes.
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.

2 participants