Stirling-PDF/.github/workflows
Dario Ghunney Ware 6699facc24
JWT Authentication (#3921)
This PR introduces JWT (JSON Web Token) authentication for Stirling-PDF,
allowing for stateless authentication capabilities alongside the
existing session-based authentication system.

### Key Features & Changes

  JWT Authentication System
- Core Service: JwtService.java - Token generation, validation, and
cookie management
- Authentication Filter: JwtAuthenticationFilter.java - Request
interceptor for JWT validation
- Key Management: KeyPersistenceService.java +
KeyPairCleanupService.java - RSA key rotation and persistence
  - Frontend: jwt-init.js - Client-side JWT handling and URL cleanup

  Security Integration
- SAML2: JwtSaml2AuthenticationRequestRepository.java - JWT-backed SAML
request storage
- OAuth2: Updated CustomAuthenticationSuccessHandler. java,
CustomOAuth2AuthenticationSuccessHandler.java &
CustomSaml2AuthenticationSuccessHandler.java for JWT integration
- Configuration: Enhanced SecurityConfiguration.java with JWT filter
chain

  Infrastructure
  - Caching: CacheConfig.java - Caffeine cache for JWT keys
  - Database: New JwtVerificationKey.java entity for key storage
- Error Handling: JwtAuthenticationEntryPoint.java for unauthorized
access

### Challenges Encountered

- Configured SecurityConfiguration to use either
`UsernamePasswordAuthenticationFilter` or `JWTAuthenticationFilter`
based on whether JWTs are enabled to prevent the former intercepting
requests while in stateless mode.
- Removed the `.defaultSuccessUrl("/")` from login configuration as its
inclusion was preventing overriding the use of the
`CustomAuthenticationSuccessHandler` and preventing proper
authentication flows.
---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [x] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [x] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [x] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
<img width="599" height="515" alt="Screenshot 2025-07-10 at 13 35 56"
src="https://github.com/user-attachments/assets/4126b752-ad0d-4ffa-b295-6714c43381e1"
/>

<img width="392" height="376" alt="Screenshot 2025-07-10 at 13 36 10"
src="https://github.com/user-attachments/assets/c681bc43-68ff-4934-8245-d544e2ad7b9c"
/>

<img width="1870" height="986" alt="eb750e8c3954fc47b2dd2e6e76ddb7d5"
src="https://github.com/user-attachments/assets/fca9b23d-b0b6-4884-8a26-98a441b641ef"
/>

<img width="1299" height="702" alt="Screenshot 2025-07-10 at 13 30 57"
src="https://github.com/user-attachments/assets/9415d8bf-fac4-4d38-8c3a-985d043d1076"
/>

### Testing (if applicable)

- [x] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ludy <Ludy87@users.noreply.github.com>
Co-authored-by: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com>
Co-authored-by: Ethan <ethan@MacBook-Pro.local>
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-08-11 12:27:42 +01:00
..
ai_pr_title_review.yml build(deps): bump actions/ai-inference from 1.2.3 to 1.2.4 (#4119) 2025-08-08 12:50:30 +01:00
auto-labelerV2.yml build(deps): bump step-security/harden-runner from 2.12.2 to 2.13.0 (#4007) 2025-07-22 10:10:45 +01:00
build.yml JWT Authentication (#3921) 2025-08-11 12:27:42 +01:00
check_properties.yml ci(github-actions): improve concurrency grouping with PR number fallback (#4101) 2025-08-02 23:12:51 +01:00
codeql.yml-disabled Bump: Harden Runner from v2.10.2 to v2.10.3 (#2686) 2025-01-13 22:26:05 +00:00
dependency-review.yml build(deps): bump step-security/harden-runner from 2.12.2 to 2.13.0 (#4007) 2025-07-22 10:10:45 +01:00
licenses-update.yml ci(workflows): add concurrency cancellation to CI workflows (#4034) 2025-07-26 16:46:25 +01:00
manage-label.yml build(deps): bump step-security/harden-runner from 2.12.2 to 2.13.0 (#4007) 2025-07-22 10:10:45 +01:00
multiOSReleases.yml build(deps): bump sigstore/cosign-installer from 3.9.1 to 3.9.2 (#4009) 2025-07-22 10:11:29 +01:00
PR-Demo-cleanup.yml build(deps): bump step-security/harden-runner from 2.12.2 to 2.13.0 (#4007) 2025-07-22 10:10:45 +01:00
PR-Demo-Comment-with-react.yml build(deps): bump docker/login-action from 3.4.0 to 3.5.0 (#4118) 2025-08-08 12:50:21 +01:00
pre_commit.yml chore(pre-commit): enable test source formatting and build validation on push to main (#4067) 2025-08-01 17:21:28 +01:00
push-docker.yml build(deps): bump docker/login-action from 3.4.0 to 3.5.0 (#4118) 2025-08-08 12:50:21 +01:00
releaseArtifacts.yml build(deps): bump sigstore/cosign-installer from 3.9.1 to 3.9.2 (#4009) 2025-07-22 10:11:29 +01:00
scorecards.yml build(deps): bump github/codeql-action from 3.29.3 to 3.29.5 (#4061) 2025-08-01 14:25:23 +01:00
sonarqube.yml ci(github-actions): improve concurrency grouping with PR number fallback (#4101) 2025-08-02 23:12:51 +01:00
stale.yml build(deps): bump step-security/harden-runner from 2.12.2 to 2.13.0 (#4007) 2025-07-22 10:10:45 +01:00
swagger.yml ci(workflows): add concurrency cancellation to CI workflows (#4034) 2025-07-26 16:46:25 +01:00
sync_files.yml ci(workflows): add concurrency cancellation to CI workflows (#4034) 2025-07-26 16:46:25 +01:00
testdriver.yml build(deps): bump docker/login-action from 3.4.0 to 3.5.0 (#4118) 2025-08-08 12:50:21 +01:00