Notamment
Qu'est-ce que OAuth?
Un protocole ouvert pour permettre une autorisation sécurisée dans une méthode simple et standard à partir des applications Web, mobiles et de bureau - à partir des documents
- La principale raison pour laquelle OAuth a été initialement configuré était de permettre aux données de l'utilisateur d'accès à l'application sans avoir à lui donner le mot de passe de l'utilisateur. Exemple: N'oubliez pas quand toutes ces applications tierces vous demanderaient un e-mail + mot de passe afin d'accéder à votre contact Gmail, etc.? Une violation de sécurité évidente car les applications peuvent conserver et pouvoir modifier votre mot de passe. Certaines applications stockeraient le mot de passe des utilisateurs dans le texte de la plainte (risque de sécurité évident). Le seul moyen pour les utilisateurs de révoquer l'accès était de modifier les mots de passe
- La principale fonction de distinction de OAuth est qu'au lieu de laisser les utilisateurs saisir des mots de passe dans l'application tierce, les utilisateurs sont redirigés vers le serveur OAuth (l'application principale je suppose) pour saisir leur mot de passe, puis redirigé vers l'application tierce qui recherche l'accès.
- D'autres cas d'utilisation d'OAuth après son cas d'utilisation initial concernaient des organisations qui construisaient des applications de premier parti sur leurs propres API. Exemple: lors de la connexion à un service Google (YouTube, Gmail, etc.), vous ne vous connectez pas directement au service. Vous êtes redirigé vers le serveur OAuth de Google (Accounts.google.com) où vous vous connectez puis redirigé vers le service Google après l'authentification.
- L'avantage consiste à centraliser la gestion des mots de passe pour des raisons de sécurité.
- Un autre avantage de la centralisation est qu'il facilite la mise à niveau de l'authentification pour tous les utilisateurs / services
Oauth 2
- Il y avait des cas d'utilisation tels que dans les applications mobiles, où la mise en œuvre initiale d'OAuth n'a pas pu être utilisée en toute sécurité.
- L'objectif d'Oauth 2 était de s'appuyer sur OAuth 1 pour les applications mobiles et de simplifier les aspects qui étaient confus pour les consommateurs d'API.
- Le problème avec OAuth 2 était qu'il y avait des conflits entre les contributeurs Web et les entreprises du protocole. Beaucoup de domaines de la discorde ont été placés dans différents documents, laissant beaucoup de lacunes dans le protocole (maintenant appelées cadre dans le document de base en conséquence).
- Le résultat est que la mise en œuvre du Web pour OAuth 2 peut être complexe et déroutante car vous devrez synthétiser les informations de différentes ébauches
- Problèmes de mise en œuvre:
- La norme ne nécessite pas de type de jeton
- ne nécessite pas de types de subventions spécifiques
- ne donne pas de conseils sur la taille des chaînes de jeton
Création d'une application OAuth 2
- Créez un compte de développeur sur le site Web du service et entrez des informations de base sur l'application (nom, site Web, logo, etc.)
- Vous recevrez un
client_id et client_secret (parfois) que votre application utilisera pour interagir avec le service. - Critique pour enregistrer une ou plusieurs URL de redirection (où le service OAuth 2 renvoie l'utilisateur après avoir autorisé l'application) à éviter de créer des applications malveillantes qui peuvent voler des données utilisateur.
- L'URL de redirection doit être un point de terminaison HTTPS pour fournir à un attaquant le code d'autorisation interceptant et détourner une session
- Au lieu d'enregistrer plusieurs URL de redirection pour différents états d'application, OAuth 2 fournit un paramètre " état " qui peut être utilisé pour coder un état d'application.
- Le paramètre est une chaîne qui sera renvoyée après que l'utilisateur est autorisé à les amener au bon emplacement dans l'application. La chaîne d'état doit être cryptée avec une méthode comme JWT.
- L'état généré initialement est stocké en session, après l'autorisation de l'utilisateur et redirigé vers l'application client, le serveur OAuth compare la chaîne d'état avec ce qui a été initialement stocké en session avant d'échanger le code d'autorisation contre un jeton d'accès
Autres concepts que j'ai appris
boucle
- URL client est un outil de ligne de commande que les développeurs utilisent pour transférer des données vers et depuis un serveur. Vous communiquez avec un serveur en spécifiant l'URL (emplacement) et les données que vous souhaitez envoyer.
- Prend en charge différents protocoles (HTTP, HTTPS) et s'exécute sur presque toutes les plateformes, ce qui le rend idéal pour tester la communication sur presque tous les appareils
- Avantages:
- Très portable et comparable à presque le système d'exploitation et l'appareil
- utile pour tester les points de terminaison
- peut être verbeux, donc utile pour le débogage
- Bonne erreur d'erreur
Exécuter un script Python sur le Web sans cadre comme Flask ou Django
- Vous auriez d'abord besoin de configurer le script Python en tant que script CGI
- CGI signifie interface de passerelle commune. Il permet aux applications de communiquer avec d'autres applications sur Internet
- Créez d'abord un dossier Cig-Bin et déplacez votre script Python là-bas
- Ensuite, utilisez
http.server In-construit de Python pour exécuter un serveur HTTP simple - Exécutez
python -m http.server --cgi du répertoire qui contient CGI-BIN pour démarrer le serveur HTTP en mode CGI. - Naviguez vers
http://localhost:8000/cgi-bin/your-script.py pour exécuter le script CGI. - Dans
your-script.py il faut inclure print("Content-type:text/htmlrnrn") pour définir le type de contenu de la réponse à "text / html" pour permettre au script d'exécuter dans le navigateur comme un fichier html
Shebang (hashbang)
- Un code spécial sous la forme d'un
#! Au tout début des fichiers exécutables dans des systèmes d'exploitation de type UNIX. - Spécifie le chemin d'accès à l'exécutable interprète qui doit être utilisé pour exécuter le script.
- Par exemple, un shebang comme
#!/usr/bin/env python au début d'un script python indique au système d'utiliser l'interpréteur python situé sur usr/bin/env python pour exécuter le script.
Ressources
- Documentation OAuth
- Qu'est-ce que OAuth et pourquoi est-ce important? - oktadev sur youtube
- Serveurs OAuth 2
- IBM: Qu'est-ce que Curl?