Aller au contenu

phil/well-known-bundle

alpha

Les adresses /.well-known/ d'un site Symfony, chacune activée dans sa configuration.

phil/well-known-bundle sert les documents que d'autres logiciels cherchent à des adresses fixes d'un domaine (RFC 8615) : comment signaler une vulnérabilité (security.txt), où changer un mot de passe, ce que le site dit d'un compte (WebFinger), quel logiciel il fait tourner (NodeInfo), le document DID d'un identifiant did:web et les attestations qui lient le domaine à ses DID, le DID vers lequel se résout un identifiant AT Protocol, et les liens d'applications des applications iOS et Android. Des documents fixes de la configuration et des documents d'autres bundles s'y ajoutent, chacun à sa propre route exacte.

Utilisez-le dans un site Symfony qui veut ces adresses justes sans écrire un contrôleur pour chacune : les types de média, l'en-tête CORS des documents lus par d'autres sites, des en-têtes de cache et un ETag, X-Robots-Tag: noindex, aucune session et aucun témoin. Un document qui n'est pas activé n'a pas de route, et donne un 404. Une valeur qu'un document ne pourrait pas servir, comme un security.txt expiré ou un DID qui n'en est pas un, empêche la construction du conteneur.

Il se branche sur le routeur de Symfony, par un chargeur de routes, et sur le conteneur : les résolveurs WebFinger sont autoconfigurés. Un bundle ActivityPub ajoute ainsi les liens de ses comptes en implémentant WebFingerResolver, et n'importe quel bundle ajoute un document en implémentant WellKnownDocument avec #[AsWellKnownDocument].

État

PartieÉtat
security.txt (RFC 9116), vérifié à la construction du conteneur, signé par un portImplémenté et testé
change-passwordImplémenté et testé
WebFinger (RFC 7033) : ressources acct: et https:, rel, résolveursImplémenté, testé et soumis au fuzzing
NodeInfo 2.1 et son document de découverte, avec un port fournisseurImplémenté et testé
did.json, did-configuration.json, atproto-didImplémenté et testé
apple-app-site-association, assetlinks.jsonImplémenté et testé
Documents fixes, documents d'autres bundlesImplémenté et testé

Documentation

DocumentCe qu'il couvre
InstallationPrérequis, enregistrement, les routes.
ConfigurationChaque option, avec sa valeur par défaut.
DocumentsCe que sert chaque document, et avec quels en-têtes.
WebFingerLes requêtes, les ressources, les résolveurs et ce que WebFinger révèle.
Points d'extensionCe qu'une application implémente, configure, remplace ou utilise.
TestsComment le bundle est testé, soumis au fuzzing et mesuré.
RéférenceChaque type et chaque service du bundle.

Démarrage rapide

# config/routes/phil_well_known.yaml
phil_well_known:
    resource: '@PhilWellKnownBundle/config/routes.php'
# config/packages/phil_well_known.yaml
phil_well_known:
    security_txt:
        contact: ['mailto:security@example.com']
        expires: '2027-06-30T00:00:00Z'
    change_password:
        route: account_password
    webfinger: true

Prérequis

PHP 8.5 ou plus récent et Symfony 8.2 ou plus récent : HttpKernel, Routing, Config et DependencyInjection.

Contribuer

Les contributions sont les bienvenues sur le monodépôt PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. Voir LICENSE.