====== API MyCentraleAssos ====== L'API est un moyen de communiquer avec l'application depuis l'extérieur au travers d'autres applications. Le protocole utilisé pour l'authentification est OAuth2. L'application peut permettre d'effectuer des tâches simple, tel que l'authentification au travers de la plateforme, ou des choses plus complexes telles que la récupération de données relatives à des associations. Chaque application externe dispose de droits bien précis pour pouvoir communiquer avec l'application et ne peut le faire qu'après consentement de l'utilisateur. ===== Description ===== ==== Présentation ==== ==== Flow ==== ==== Vocabulaire ==== * **Utilisateur** : Personne naviguant sur l'application et déléguant ses droits vers une application tierce * **Client** : Application tierce en question * **Token** : Clé permettant à un Client d'effectuer des actions au nom de l'Utilisateur. Celui-ci a une durée de 1 heure par défaut. * **Refresh Token** : Clé permettant à une application de générer un nouveau //Token// ===== Création d'une nouvelle application ===== ==== Caractéristiques d'une application ==== Une application dispose d'un nom, d'un jeu de clés publique et privée, de différents liens de retour autorisés, ainsi que de différents droits. L'application dispose de différents droits concernant le moyen d'authentification (**grant type**) : * **authorization_code** permet d'obtenir un code d'autorisation retourné à l'application via l'intermédiaire de l'utilisateur. L'utilisateur n'aura donc jamais accès au token. * **refresh_token** permet d'obtenir un nouveau token après expiration. * **token** (Implicit) permet d'avoir un Token directement retourné au client (applications front-end) * **password** (User credentials/Resource Owner Password Credentials) permet d'avoir un token en échange des informations de connexion de l'utilisateur. * **client_credentials** permet d'avoir un token n'étant pas lié à un utilisateur. Les grant type **password** et **client_credentials** sont réservés à des usages internes au GInfo, pour les communications inter-applications. Sauf décision exceptionnelle des responsables du GInfo, ces grant type ne seront pas autorisés pour des applications externes non gérées par le GInfo. Et de différents droits d'accès que l'utilisateur accorde à l'application (**scope**) : * **scope_users** donne l'accès à l'annuaire des utilisateurs * **scope_assos** donne accès à la gestion des associations en fonction des droits de l'utilisateur * **scope_cards** donne l'accès à la recherche & à la gestion de cartes NFC. ==== Commandes ==== Pour la création de nouvelles applications : php bin/console fos:oauth-server:create-client --redirect-uri="..." --grant-type="..." ===== Exemples ===== ===== Références ===== * [[https://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/|OAuth2 Grant Types]] * [[https://github.com/FriendsOfSymfony/oauth2-php/blob/master/lib/OAuth2.php|Implémentation des Grant Types utilisée]] * [[https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md|Documentation FOSOAuthServerBundle]]