Fixes #39712 - Add native OpenID Connect authentication - #11220
Conversation
59b5294 to
b7a5f47
Compare
b7a5f47 to
26e470d
Compare
Assisted-By: Codex 5.6 Sol High
26e470d to
23de533
Compare
|
CI was retriggered with a content-identical commit (tree 142c9ce1c5686018450c2bd4696370bc4a46f196). The same unrelated HostgroupJSTest#test_0002_creates a hostgroup with provisioning data timed out again, but the failure moved from Ruby 3.3 in the previous run to Ruby 3.0 in the rerun, while the other Ruby matrix passed each time. The exact same flaky failure also appeared on unrelated #10764. This looks like an existing Capybara/integration test flake rather than a regression in the OIDC changes. Previous Ruby 3.3 failure: https://github.com/theforeman/foreman/actions/runs/33276404697/job/99163990465 |
What this changes
This adds native multi-provider OpenID Connect authentication to Foreman without requiring Apache/mod_auth_openidc.
OIDC providers are managed as authentication sources and can be added or changed without restarting Foreman. The implementation includes:
Provider access, refresh and ID tokens are not persisted. Foreman keeps its own authenticated session after the callback.
Compatibility
The implementation uses Foreman's existing rest-client and jwt dependencies. It does not add another OIDC client gem or change Faraday constraints, so the shared Foreman and Katello Bundler graph remains compatible.
The existing global OIDC bearer-token validator and Apache SSO integration remain available. The developer documentation includes Keycloak configuration and a migration path from Apache-based OIDC.
Testing
The complete Ruby test matrix will run in CI because this local checkout does not have the full Foreman bundle installed.
Related to #28345 and supersedes the incomplete proof of concept in #10797.
Assisted-By: Codex 5.6 Sol High