Ce qui se passe
FrameworkBundle est le bundle que toute application Symfony charge, et il porte
la configuration de presque tout : le cache, le routeur, le sérialiseur, le
validateur, Messenger, le client HTTP, le mailer. Sur la branche 8.2, ce bloc
est démonté. Le commit qui résume l'opération le dit en une ligne : déplacer
chaque section de configuration vers un bundle livré par son propre composant
(90f7e56).
Les bundles ajoutés cette semaine :
| Bundle | Commit | Bundle | Commit |
|---|---|---|---|
MessengerBundle |
edbf20d |
SerializerBundle |
6023964 |
HttpClientBundle |
d4ae7d9 |
ValidationBundle |
b4fdf11 |
CacheBundle |
e8f7c6e |
RouterBundle |
97b8c5d |
MailerBundle |
efc11f4 |
AssetBundle |
c79f7e7 |
NotifierBundle |
2492972 |
AssetMapperBundle |
32f7b0f |
LockBundle |
b7b8f40 |
RateLimiterBundle |
1cdc3be |
SchedulerBundle |
9542a92 |
WebhookBundle |
61c0d33 |
JsonStreamerBundle |
d68be53 |
HtmlSanitizerBundle |
5a79078 |
PropertyInfoBundle |
305fbdc |
WorkflowBundle |
84003c7 |
Trois commits couvrent le reste par lots : les composants sans clé de
configuration — JsonPath, Mime, ObjectMapper, Process (a1f8660) —, les sections
sans couplage transverse — RemoteEvent, Semaphore, WebLink (0a73ec6) — et celles
qui demandaient une inversion de dépendance : PropertyAccess, TypeInfo, Uid
(102319b).
Le mécanisme
Éclater ce bundle-là aurait dû casser toutes les configurations existantes, parce
qu'un nœud framework.messenger écrit dans un config/packages/*.yaml doit
continuer à être compris. Deux ajouts discrets l'évitent :
- l'aliasing de configuration (
1bb575d) : un nœud de configuration peut désormais désigner la configuration d'une autre extension, donc l'ancien chemin reste valide tout en alimentant le nouveau bundle ; - le tag
container.remove_if_missing(e95b475) : un service disparaît du conteneur quand le paquet dont il dépend n'est pas installé, au lieu de faire échouer la compilation.
Deux autres changements complètent l'affaire. Les bundles qui n'ont rien à faire
au démarrage ne sont plus instanciés du tout (99b258a), et quand une extension
manque, le conteneur nomme le paquet Composer à installer (4a4b29d) plutôt
que d'échouer sans indication.
Ce qui est déjà disponible
Le reste de la semaine porte sur OAuth2 et OpenID Connect, et une partie est rétroportée jusqu'à la 6.4 — donc utilisable tout de suite :
- plus aucune redirection suivie sur les points d'accès du fournisseur : UserInfo
en 6.4 (
ccce7db), JWKS, introspection OAuth2 et validation CAS en 7.4 (3385153), token et UserInfo en 8.2 (8dae404) ; - les revendications vérifiées OIDC lues comme des booléens et non comme des
chaînes (
2ece1b4en 6.4,73507c0en 7.4) ; - un 401 au lieu d'un 500 quand la requête d'introspection échoue
(
17b5084, 7.4).
En 8.2 s'ajoutent le durcissement de oidc_login contre les données de
fournisseur malformées et les attaques par confusion de fournisseur (38c4888),
les métadonnées de ressource protégée de la RFC 9728 (9200ad2), les réponses
d'introspection signées de la RFC 9701 (d2e0f17), et la signature des jetons
d'accès par défaut en RS256 (d8cb689).
À retenir
La semaine a vu fusionner 135 pull requests (111 de code, 24 de documentation) et fermer 57 tickets, pour 33 auteurs.
L'éclatement de FrameworkBundle n'est pas à déployer : 8.2 est en
développement. Le durcissement OIDC, lui, est dans des branches maintenues, et la
liste ci-dessus se lit comme une liste de contrôle sur une application qui
s'authentifie auprès d'un fournisseur d'identité.