Sécurité et Services dans le FrameWork Symfony 3
Symfony gère lui même l'authentification du client après avoir attrapé la requête du client sur la route ''login_check''
Seule la route ''login'' doit définir une action de contrôleur pour obtenir le formulaire de d'authentification
Toutes les URL sont concernées car il n'y a pas de pattern défini.
Quelles sont les lignes à écrire dans app/config/security.yml pour que toutes les URLs de notre site soient accessibles uniquement;
Comment se déconnecter, lorsque l'on utilise l'option 'http_basic'' pour se connecter avec un login's name et un password?
Quelle commande CLI (Command Line Interface) nous permet de coder notre mot de passe dans la section ''memory'' de notre fichier app/config/security.yml avec l'algorithme spécifié dans ce même fichier?
Le bundle FOSUserBundle s'occupe-t-il de la sécurité?
Il met à notre disposition un objet User avec des routes et des contrôleurs pour nous aider à se loguer, s'enregistrer, récupérer un nouveau mot de passe etc...
Quel bundle peut-on créer afin de gérer la sécurité de notre site?
Créer un UserBundle
>php bin/console generate:bundle
Dans quel répertoire de notre UserBundle nous recommande-t-on de sauver notre formulaire de login ''login.html.twig''?
UserBundle/Resources/views/Security/login.html.twig
Si l'on choisit de créer un formulaire de login ''login.html.twig'' dans notre UserBundle, quel est par défaut:
Quel est le code type pour l'action loginAction() de notre contrôleur qui gère le login de notre formulaire d'authentification?
Quel est l'ID du service qui gère l'authorisation?
security.authorization_checker
Quel est le nom du service qui nous permet de récupérer les erreurs survenues pendant une mauvaise authentification avec formulaire?
security.authentication_utils
Quel est le nom du service qui nous permet de récupérer le login's name du formulaire d'authentification afin de le représenter dans le formulaire si l'authentification s'est mal passée?
Cela évite à l'utilisateur de retaper son login's name.
security.authentication_utils
Doit-on faire en sorte que l'URL /login requiert un rôle afin d'accéder à notre formulaire de d'authentification?
Non
L'URL /login_check doit-elle prise en compte par le pare-feu?
Oui
Si l'on est authentifié sur un pare-feu, l'est-on forcément sur un autre pare-feu?
Les pare-feux ne partagent pas afin d'augmenter la sécurité lors de paramétrages complexes
Que retourne $this->getUser() si le user est anonyme?
Null
Que retourne $this->getUser() si le user n'est pas anonyme?
Une instance de la classe User
Dans un template, comment accéder aux attributs d'un utilisateur définit par la classe User?
{{ app.user.nomAttribut }}
Dans un template que vaut {{ app.user }} si l'utilisateur est anonyme?
Null
Quelle méthode du service ''security.authorization_checker'' permet de vérifier qu'un utilisateur a le bon rôle?
$this->get('security.authorisation_checker) ->isGranted('ROLE_NomDuRôle')
La section ''role_hierarchy'' du fichier app/config/security.yml définit-elle l'exhaustivité des rôles?
Elle définit la hierarchie des rôles.
D'autres rôles peuvent exister en dehors de cette section
Comment reconnaître une développeuse sexy?
C'est une développeuse qui possède un String dans l'Array.
Quelle commande CLI (Command Line Interface) nous permet de lancer le serveur interne de Symfony?
>php bin/console server:run
Quel est l'avantage d'utiliser le serveur PHP de Symfony?
Cela permet de tester localement notre application Symfony sans avoir à installer et configurer un serveur Apache ou Nginx.
Peut-on utiliser le serveur PHP de Symfony sur un ordinateur connecté au réseau internet public?
On ne doit jamais lancer le serveur PHP Symfony si notre ordinateur est connecté à un reseau internet public.
On l'utilise dans un environnement controlé pour tester notre application en mode développement.
Quelle annotation ajouter à une action de contrôleur pour que seul les utilisateurs avec les rôles ROLE_X et ROLE_Y puissent la lancer?
@Security("has_role('ROLE_X') and has_role('ROLE_Y')'')
Quelles lignes écrire dans la section ''access_control'' pour que seul les utilisateurs avec le rôle ROLE_X et l'ip 172.217.20.163 puissent accéder aux URL commençant par /toto avec le protocole https?
Quelle interface doit implémenter notre classe User de notre bundle UserBundle afin d'être un utilisateur de la couche sécurité de Symfony?
Comment savoir le nom des attributs à utiliser dans notre classe User de notre bundle UserBundle?
En regardant le contenu de l'interface UserInterface que notre classe User doit implémenter pour faire partie de la couche sécurité de Symfony?
Par défaut, d'où provient la classe User qui est utilisée pour l'authentification?
Symfony utilise par défaut la classe User située dans:
Symfony/Component/Security/Core/User/User.php
(cf. le fichier app/config/security.yml configuré par défaut avec cet utilisateur)
Quelles sont les étapes générales pour développer sa propre classe User dans son propre Bundle UserBundle avec un formulaire d'authentification et un user sauvegardé en base de données?
(Sans utiliser FosUserBundle ou tout autre bundle de gestion d'utilisateurs)
Citez les 3 fournisseurs d'utilisateurs (providers) utilisables dans la section ''providers'' du fichier app/config/security.yml
Un fournisseur d'utilisateur (provider) est une classe qui doit implémenter qu'elle interface?
L'interface UserProviderInterface
Avec quelle méthode de l'interface UserProviderInterface, le provider va-t-il renvoyer au firewall un utilisateur en fonction de son username?
Quelles lignes écrire dans app/config/security.yml pour indiquer que notre provider de nom ''main'' fait appel à une entité OC\UserBundle\Entity\User dont l'attribut ''username'' contient le nom de l'utilisateur?
Aprés avoir définit un nom de provider dans la section ''providers'' faut-il indiquer ce nom dans la section ''firewalls''?
Oui
Quel est l'ID du service Doctrine (son alias) qui permet d'accéder à la base de données?
doctrine.orm.entity_manager
Quel est l'ID du service (son alias) qui permet de faciliter l'envoi d'emails?
mailer
Quel est l'ID du service qui permet d'accéder à une instance de twig_evironment et que l'on peut utiliser par exemple pour ajouter nos propres extensions?
twig
Quel est l'ID du service qui permet d'accéder au contaîner de services lui-même avec tous les services qu'il contient?
service_container
Quel est l'ID du service qui permet d'obtenir un objet contenant la requête courante?
request_stack
Quel est l'ID du service qui permet d'accéder au routeur?
router