Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.6k
[SecurityBundle] Improve support for authenticators that don't need a user provider#48594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
...curityBundle/DependencyInjection/Security/Factory/StatelessAuthenticatorFactoryInterface.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
Neat! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
With changelog entry
caace6c
to6015ad0
Compare6015ad0
to5464c57
CompareMerging now to help moving forward in#48272. |
Thank you@wouterj. |
…vincentchalamon)This PR was squashed before being merged into the 6.3 branch.Discussion----------[Security] Add OidcUserInfoTokenHandler and OidcUser| Q | A| ------------- | ---| Branch? | 6.3| Bug fix? | no| New feature? | yes| Deprecations? | no| Tickets | N/A| License | MIT| Doc PR |symfony/symfony-docs#17463Hi,This PR aims to complete [the previous one](#46428) from `@Spomky` with an AccessTokenHandler ready-to-use with an OIDC server (Keycloak, Auth0).## TODO- [x] Rebase from 6.3- [x] Rebase from#48285- [x] Rebase from#48594- [x] Write doc (symfony/symfony-docs#17463)- [x] Add TokenHandlerFactory- [x] Add ServiceTokenHandlerFactory for BC layer- [x] Add OidcUserInfoTokenHandlerFactory- [x] Add OidcTokenHandlerFactory (using web-token/jwt-*)- [x] Implement OidcUser to keep user claims from OIDC server- [x] Update doc PR about claims usage in a custom UserProvider- [x] ~Update doc PR about OidcUserProvider usage~ (abandonned)## Usage```yaml# usage with a custom clientsecurity: firewalls: main: pattern: ^/ access_token: token_handler: oidc_user_info: client: oidc.client``````yaml# usage with generic HttpClientsecurity: firewalls: main: pattern: ^/ access_token: token_handler: oidc_user_info: claim: email client: base_uri:https://www.example.com/realms/demo/protocol/openid-connect/userinfo``````yaml# usage with token decode (no call to OIDC server)security: firewalls: main: pattern: ^/ access_token: token_handler: oidc: signature: # Algorithm used to sign the JWS algorithm: 'HS256' # A JSON-encoded JWK key: '{"kty":"...","k":"..."}'``````php# usage with a custom UserProviderclass CustomUserProvider implements UserProviderInterface{ public function loadUserByIdentifier(string $identifier, array $claims = []): UserInterface { // do some magic }}```Commits-------99a35f0 [Security] Add OidcUserInfoTokenHandler and OidcUser
Uh oh!
There was an error while loading.Please reload this page.
This builds on top of the self-contained token feature added in 6.2 (#48285). While that PR allows access token handlers to load the user from the access token without user provider, it was still required to configure a user provider in the code.
With this PR, the bundle allows a user provider to not be configured when:
stateless
, otherwise we still need the user provider to refresh the userStatelessAuthenticatorFactoryInterface
(i.e. declares compatibility with no user provider)This can help with simplifying the code in#48272 (comment) , as we no longer have to define a special user badge and provider.
cc@Jeroeny