Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
90aa5c3
feat!: fail closed when an OpenID Connect callback cannot be validated
turegjorup Aug 19, 2026
3e6266b
docs: cut ADR 002 and UPGRADE-6.0 down to the point
turegjorup Aug 19, 2026
53b30b2
fix: keep the failure cause outside the security hierarchy
turegjorup Aug 19, 2026
6a60080
docs: address review on fail-closed
turegjorup Aug 19, 2026
d5be021
fix: settle which logger an authenticator receives
turegjorup Aug 19, 2026
09339cd
Merge pull request #62 from itk-dev/feature/fail-closed-on-auth-failure
turegjorup Aug 19, 2026
05c9c09
fix: resolve an alias configured as logging_options.logger
turegjorup Aug 19, 2026
4e86595
Merge branch 'develop' into feature/configured-logger-wins
turegjorup Aug 19, 2026
050a5fa
Merge pull request #64 from itk-dev/feature/configured-logger-wins
turegjorup Aug 19, 2026
73796a6
feat!: require client_secret_expires_at
turegjorup Aug 19, 2026
5c23695
fix: drop the default from the now-required expiry date
turegjorup Aug 19, 2026
eb24cb9
fix: reject a non-string expiry date instead of discarding it
turegjorup Aug 19, 2026
bf87a0b
test: reunite a docblock with its method and guard the handler loop
turegjorup Aug 19, 2026
5a1aac4
docs: correct the expiry checker's account of env vars and validation
turegjorup Aug 20, 2026
876f7ea
Merge pull request #65 from itk-dev/feature/require-client-secret-expiry
turegjorup Aug 20, 2026
9f9b8d2
feat!: accept a callback only on the provider's callback path
turegjorup Aug 20, 2026
fed54ea
docs: ADR 003, upgrade notes and README for the callback path constraint
turegjorup Aug 20, 2026
33afa71
test: prove a deep link survives the login round trip, and document i…
turegjorup Aug 20, 2026
5b08e49
docs: drop ADR 003's claim of a filed follow-up issue
turegjorup Aug 20, 2026
26e467e
feat: let a login link name where to return to
turegjorup Aug 20, 2026
f4d76a0
fix: compare the callback path against the base URL as well
turegjorup Aug 20, 2026
45c9f8a
docs: list isCallbackPath and correct the callback_path changelog entry
turegjorup Aug 25, 2026
7b44c92
Merge pull request #66 from itk-dev/feature/constrain-supports-to-cal…
turegjorup Aug 25, 2026
b8e4ee8
fix: annotate registerBundles() past Symfony 8.1's deprecated BundleI…
turegjorup Aug 25, 2026
f10b335
fix: analyse against the declared PHP range, not the runtime version
turegjorup Aug 25, 2026
8b418a0
docs: changelog entry for the PHP range pin
turegjorup Aug 25, 2026
f9040de
Merge the Symfony 8.1 BundleInterface fix, which analysing on 8.5 req…
turegjorup Aug 25, 2026
7a7a268
ci: analyse on PHP 8.5 so Symfony 8 is analysed at all
turegjorup Aug 25, 2026
5fef4aa
Merge pull request #70 from itk-dev/fix/phpstan-php-version-range
turegjorup Aug 25, 2026
252e504
feat: keep client_secret_expires_at optional, and reorder the upgrade…
turegjorup Aug 25, 2026
0039d5d
Merge pull request #71 from itk-dev/docs/upgrade-6.0-and-optional-expiry
turegjorup Aug 25, 2026
b532bfa
ci: analyse the dependency floor, and fix what it found
turegjorup Aug 25, 2026
8694cb1
Merge pull request #72 from itk-dev/ci/phpstan-lowest-runtime-depende…
turegjorup Aug 25, 2026
543a43e
ci: update actions/checkout to v7
turegjorup Aug 25, 2026
dfeb91a
Merge pull request #73 from itk-dev/ci/update-github-actions
turegjorup Aug 25, 2026
1f4a6dd
docs: open the upgrade guide with require, not update
turegjorup Aug 25, 2026
0189d9a
Merge pull request #74 from itk-dev/docs/upgrade-6.0-require-constraint
turegjorup Aug 25, 2026
3060ce0
docs: prepare 6.0.0
turegjorup Aug 25, 2026
9c61921
docs: cut UPGRADE-6.0 to the breaking changes and how to adapt
turegjorup Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 2

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/composer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
matrix:
prefer: [prefer-lowest, prefer-stable]
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand All @@ -58,7 +58,7 @@ jobs:
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand All @@ -73,7 +73,7 @@ jobs:
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/github_build_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
APP_ENV: prod
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Create a release in GitHub
run: gh release create ${{ github.ref_name }} --verify-tag --generate-notes
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/markdown.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Create docker network
run: |
Expand Down
41 changes: 37 additions & 4 deletions .github/workflows/php.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
name: PHP - Check Coding Standards
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand All @@ -26,17 +26,50 @@ jobs:
docker compose run --rm phpfpm vendor/bin/php-cs-fixer fix --dry-run --diff

phpstan:
# Analysed on the highest supported PHP, not the default 8.3 service: Symfony 8.1
# requires PHP >= 8.4.1, so on 8.3 composer cannot install the Symfony 8 that
# composer.json advertises and the analysis never sees it. phpstan.neon pins the
# analysis to the declared php ^8.3 range, so the floor stays protected from here.
name: PHPStan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm85 composer install
docker compose run --rm phpfpm85 vendor/bin/phpstan

phpstan-lowest:
# The declared dependency floor, analysed with current dev tooling. A plain
# --prefer-lowest also downgrades PHPUnit and phpstan-phpunit, and then nearly
# every error reported is an artefact of that rather than a statement about
# Symfony 6.4 — 29 of 30, when this was measured. Lowering only what `require`
# names keeps the analysis about the runtime the bundle claims to support.
#
# Runs on the PHP floor too, in the default 8.3 service, as the counterpart to the
# phpstan job's ceiling on 8.5.
#
# Analysis only: lowering the runtime packages drags shared Symfony components
# (finder, console) down with them, and php-cs-fixer built on those emits nonsense
# such as `previous : $e`. Never add a formatter to this job, and do not reuse the
# resulting vendor/ for anything but PHPStan.
name: PHPStan (lowest runtime dependencies)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm composer install
docker compose run --rm phpfpm sh -c \
'composer update --prefer-lowest --with-all-dependencies $(composer show --direct --no-dev --name-only)'
docker compose run --rm phpfpm vendor/bin/phpstan

unit-tests:
Expand Down Expand Up @@ -65,7 +98,7 @@ jobs:
php: "8.5"
prefer: prefer-stable
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand Down Expand Up @@ -96,7 +129,7 @@ jobs:
php: "8.3"
prefer: prefer-stable
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/yaml.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
yaml-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Create docker network
run: |
Expand Down
49 changes: 48 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,52 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [6.0.0] - 2026-08-25

See [UPGRADE-6.0.md](UPGRADE-6.0.md).

### Changed (BREAKING)

- A failed OpenID Connect callback throws `AuthenticationFailedException` instead of
Symfony's `AuthenticationException`, so it escapes the firewall rather than
redirecting to the identity provider again. `CliLoginTokenAuthenticator` is
unchanged.
- `getPrevious()` on that exception is the underlying OpenID Connect exception.
- A callback is recognised only on the provider's callback path, not on any URL
carrying `state` and `code` (#63).
- Each provider must declare `redirect_uri`, `redirect_route` or `callback_path`.

### Added

- `callback_path` per provider, for a proxy that rewrites the path without announcing
it.
- `OpenIdLoginAuthenticator::getSupportedProviderKeys()`, to narrow an authenticator to
named providers. Defaults to all of them.
- `OpenIdLoginAuthenticator::createTargetPathRedirect()`, returning the user to the
page that sent them to log in.
- `?target_path=` on the login route, validated as a path within the application.
- `OpenIdConfigurationProviderManager::getRedirectUriPaths()` and `isCallbackPath()`.

### Changed

- `client_secret_expires_at` remains optional, and the 5.1 deprecation for leaving it
unset is gone. Unset reports `unknown`; a value that is set must be a string and
parseable.
- `UPGRADE-6.0.md` rewritten and linked from `README.md`.
- Static analysis runs against both ends of the supported dependency range.
- `actions/checkout` updated to v7.

### Fixed

- `logging_options.logger` no longer depends on bundle registration order.
- `getContainerExtension()` no longer returns `mixed` on Symfony 6.4.

### Removed (BREAKING)

- `ItkOpenIdConnectBundleException`. Catch `OpenIdConnectBundleExceptionInterface`.
- `UserDoesNotExistException`. Use Symfony's `UserNotFoundException`.
- `symfony/deprecation-contracts` from `require`.

## [5.1.1] - 2026-08-19

### Fixed
Expand Down Expand Up @@ -281,7 +327,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`itk-dev/openid-connect` 1.0.0 to 2.1.0
- OpenId Connect Bundle: Added CLI login feature.

[unreleased]: https://github.com/itk-dev/openid-connect-bundle/compare/5.1.1...HEAD
[unreleased]: https://github.com/itk-dev/openid-connect-bundle/compare/6.0.0...HEAD
[6.0.0]: https://github.com/itk-dev/openid-connect-bundle/compare/5.1.1...6.0.0
[5.1.1]: https://github.com/itk-dev/openid-connect-bundle/compare/5.1.0...5.1.1
[5.1.0]: https://github.com/itk-dev/openid-connect-bundle/compare/5.0.0...5.1.0
[5.0.0]: https://github.com/itk-dev/openid-connect-bundle/compare/4.2.0...5.0.0
Expand Down
Loading