arnouxor/oauthosor

This package is abandoned and no longer maintained. No replacement package was suggested.
There is no license information available for the latest version (v0.0.27) of this package.

Système d'authentification universel pour Codeigniter 3

v0.0.27 2018-03-12 09:14 UTC

README

Euh... pour faire simple :

  • Vous en avez marre de galérer avec l'identification de votre site !?
  • Vous utilsez le framework Codeigniter ?
  • Vous rêvez d'avoir un server oauth2 pour gérer vos connexions sans avoir le moindre travail à faire ?

Oauthosor est là pour vous !

En fait, c'est simple, Oauthosor a pour but de vous offrir un module d'authentification complet permettant de :

  • Gérer une connexion web basique (avec un serveur oauth2 derrière)
  • Gérer l'inscription des utilisateurs
  • Gérer le changement de mot de passe de vos utilisateurs
  • Permettre une connexion à votre site avec les boutons : facebook, twitter, google, linkedin...
  • Gérer des accès à votre API (et proposer vous même un bouton : "Se connecter avec mon site")

Installation

  • Installez oauthosor avec composer sur votre projet :

      composer require arnouxor/oauthosor
    
  • Copier le fichier config/oauthosor_sample.php et collez-le dans votre répertoire config : config/oauthosor.php. Voir plus bas pour bien comprendre ce fichier de conf.

  • Créez le fichier controllers/OauthosorClient et collez le code suivant à l'intérieur

      <?php
    
      defined('BASEPATH') or exit('No direct script access allowed');
      require FCPATH.'vendor/arnouxor/oauthosor/controllers/OauthosorClient.php';
    
  • Répeter l'opération pour les fichiers controllers/OauthosorWeb et controllers/OauthosorServer en changeant bien sûr le chemin dans le code que tu colles dedans

  • Crééz un MY_Controller dans votre répertoire core et coller à la fin les deux includes suivants :

      require FCPATH.'vendor/arnouxor/oauthosor/core/MY_Public_API.php';
      require FCPATH.'vendor/arnouxor/oauthosor/core/MY_Private_API.php';
    
  • Lancer database/oauthosor.sql pour créer la base de données

  • Vous avez besoin d'une méthode qui chargera certains messages d'erreurs (mauvais utilisateur par exemple). Voir le paramètre loadLanguage dans le fichier de conf. Ce fichier chargera les mots suivants :

      $lang["bad_user_pass_combinaison"] = "Mauvais identifiants de connexion !";
      $lang["user_already_exists"] = "Mauvais identifiants de connexion !";
      $lang["reActivate_ok"] = "L'email de confirmation vous a été envoyé de nouveau";
      $lang["prepare_change_password_ok"] = "Un email vous a été envoyé pour effectuer votre changement de mot de passe";
    
  • Pour le moment il faut aussi créer un fichier libraries/MY_Form_validation avec le contenu suivant (c'est pour le restserver créé par Maltyxx)

      defined('BASEPATH') OR exit('No direct script access allowed');
      require(FCPATH.'vendor/arnouxor/oauthosor/libraries/MY_Form_validation.php');
    
  • Checkez l'url http://tonsite.dev/oauthosorweb/testing pour avoir l'interface de test. Attention il faut créer des petites choses en BDD pour que tout fonctionne correctement

Le fichier config/oauthosor.php

Ce fichier est très important car il vous permet de définir les choses suivantes :

  • l'url de base de votre site (HybridAuth qui est utilisé en a besoin)
  • Les identifiants de votre propre application privée (définis dans la base oauthosor.oauth_client. C'est très important car comme je vous l'ai dit on utilise oauth2 pour se connecter même en connexion web, du coup on place notre site comme une application privé de lui-même :) )
  • le nom du cookie pour la connexion web persistante
  • Les fonctions de callback (si vous voulez faire des traitements supplémentaire un peu dans tous les sens du genre un log de connexion, un envoi de mail particulier pendant l'inscription de l'utilisateur...)
  • Vos clés / secrets des différentes applications que vous créerez sur facebook, google... pour pouvoir offrir le bouton de connexion.

Oauthosor web

Bon bah c'est tout ce qui touche à la gestion d'une connexion / inscription sur un site. Pour cela on se place comme une application au scope privé de notre server oauth2. Ici il n'y a pas grand chose à configurer. Il faut juste voir la table oauth_clients en BDD et comprendre que maintenant tes utilisateurs sont dans oauth_users. Bien sûr il y a un user_id permettant de lier les utilisateurs de ton site avec ceux de la BDD oauthosor.

En fait il suffira de poster tes formulaires de connexion aux adresses suivantes :

Oauthosor Server

En ce qui concerne le serveur Oauth2 c'est assez compliqué à prendre en main donc ne pas hésiter à consulter cette page très bien détaillée pour comprendre son fonctionnement

https://zestedesavoir.com/articles/1616/comprendre-oauth-2-0-par-lexemple/#2-les-roles

L'idée est qu'en base de données tu ais des clients (oauth_clients) à qui tu donnes des grant_type et des scope particuliers.

Pour oauthosor j'ai choisi d'avoir deux scopes : public pour les applications d'autres développeur qui souhaite taper sur ton site sous forme d'API et private pour ta propre application qui tape sur ton site (avec oauthosorweb) mais qui a le droit de choper bien plus d'information.

En BDD tu verras :

  • MY_PRIVATE_APP_DEV ton site pour faire simple, il a le droit de choper plein de truc donc son scope est private
  • MY_PRIVATE_APP_PROD ton site en prod
  • MY_PUBLIC_APP_DEV correspondant à ton appli de dev public (comme si c'était celle d'un autre dev c'est pour tester l'api)
  • MY_PUBLIC_APP Une appli de dev en prod

Tout cela tu peux le changer, c'est juste une config de base qui permet aux tests de fonctionner.

TODO

Tu veux aider à améliorer le truc ?? Super alors voilà ce qu'on peut faire :

  • Créer une page de statistique d'accés et de génération de token
  • Interface permettant de créer des clients ou des users qui auront accès à l'api
  • Pouvoir révoquer des refresh token (et donc déconnecter des utilisateurs)

Oauthosor Client

Permet d'utiliser les boutons facebook connect et autres. On utilise HybridAuth derrière (https://github.com/hybridauth/hybridauth)

Quand un utilsateur se connecte et qu'on ne l'a pas cela le créé en BDD. Il sera identifié grâce à son facebook_id par exemple.

TODO

- Ajouter tous les boutons sur la vue de test

Je pense que la doc est loin d'être complète car je n'ai pas trop le temps de m'y consacrer franchement mais n'hésitez pas à revenir vers moi pour toute information.

;)