DIIAGE: Prépa session 19/01/2018
This commit is contained in:
parent
608c203acd
commit
0eb9d2e1e1
|
@ -0,0 +1,3 @@
|
|||
- https://stackoverflow.com/questions/43836153/how-to-revoke-client-certificate
|
||||
https://jamielinux.com/docs/openssl-certificate-authority/certificate-revocation-lists.html
|
||||
https://gist.github.com/mtigas/952344
|
|
@ -0,0 +1,21 @@
|
|||
# Préparation
|
||||
|
||||
## Problématiques
|
||||
|
||||
- Quels mécanismes d'authentification sont aujourd'hui communément utilisés pour sécuriser l'accès aux applications distribuées ?
|
||||
- Quels mécanismes de protection sont possibles pour mitiger les risques d'attaque sur un point d'authentification ?
|
||||
|
||||
## Bibliographie
|
||||
|
||||
### Authentification
|
||||
|
||||
- [REST API authentication schemes](https://payatu.com/authentication-schemes-rest-api/)
|
||||
- [OWASP - Authentication Cheat Sheet](https://www.owasp.org/index.php/Authentication_Cheat_Sheet)
|
||||
- [OAuth2 simplifed](https://aaronparecki.com/oauth-2-simplified/)
|
||||
- [Getting started with JSON Web Token](https://auth0.com/learn/json-web-tokens/)
|
||||
- [OpenID Connect explained](https://connect2id.com/learn/openid-connect)
|
||||
- [Amazon Request Signing Scheme](https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
|
||||
- [Fonction de hachage cryptographique](https://fr.wikipedia.org/wiki/Fonction_de_hachage_cryptographique)
|
||||
- [Hashcash - Preuve de travail](https://fr.wikipedia.org/wiki/Hashcash)
|
||||
- [Nonce](https://fr.wikipedia.org/wiki/Nonce_(cryptographie))
|
||||
- [Authentification via certificat SSL client en NodeJS](https://medium.com/@sevcsik/authentication-using-https-client-certificates-3c9d270e8326)
|
|
@ -0,0 +1,58 @@
|
|||
<style>
|
||||
* {
|
||||
font-size: 0.8em !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
# Authentification et autorisation: QCM
|
||||
|
||||
- **Nom**
|
||||
- **Prénom**
|
||||
- **Classe**
|
||||
- **Date**
|
||||
|
||||
## Consigne
|
||||
|
||||
Pour chaque question, entourer **la ou les bonnes réponses**.
|
||||
|
||||
**Attention**, certaines questions sont volontairement rédigées sous la forme plurielle. Cela n'implique pas forcément qu'il y a plusieurs bonnes réponses.
|
||||
|
||||
## Questions
|
||||
|
||||
### A. Quels sont les inconvénients liés à l'utilisation de modèle d'authentification HTTP `Basic Auth` pour une API REST ?
|
||||
|
||||
1. Il est nécessaire d'utiliser TLS pour en faire un mécanisme d'authentification sécurisé.
|
||||
2. Il ne permet pas de mettre en place une politique de rotation des secrets efficaces.
|
||||
3. Il ne permet pas une bonne "montée en charge" de l'infrastructure.
|
||||
|
||||
|
||||
### B. Parmi ces propositions, lesquelles sont valides pour faciliter l'usage de "gestionnaire de mots de passe" dans les applications Web ?
|
||||
|
||||
1. Ne pas empêcher le "copier/coller" dans les champs identifiant/mot de passe d'un formulaire de connexion.
|
||||
2. Ne pas limiter artificiellement la taille des mots des passe.
|
||||
3. Ajouter l'attribut "allow-autogen" sur les champs <input type="password" />
|
||||
|
||||
### C. Le modèle de signature des requêtes d'Amazon Web Services se base notamment sur:
|
||||
|
||||
1. Une fonction de hachage cryptographique appliquées sur une partie des attributs de la requête HTTP
|
||||
2. Le standard JSON Web Token
|
||||
3. Un identifiant universellement unique par requête
|
||||
|
||||
### D. Un "nonce" est typiquement utilisé pour protéger les points d'authentification des attaques du type:
|
||||
|
||||
1. Attaque par "homme du milieu"
|
||||
2. Attaque par "force brute"
|
||||
3. Attaque par rejeu
|
||||
|
||||
### E. L'utilisation de mécanismes de type "preuve de travail" pour protéger un point d'authentification à pour objectif de:
|
||||
|
||||
1. De miner de la crypto-monnaie pour financer le site
|
||||
2. De forcer chaque utilisateur à fournir un certain temps CPU pour chaque requête afin d'éviter le "spam"
|
||||
3.
|
||||
|
||||
### F. Le standard OpenID Connect base ses échanges d'informations sur:
|
||||
|
||||
1. Des requêtes HTTP et des données au format JSON
|
||||
|
||||
|
||||
### G.
|
|
@ -0,0 +1,43 @@
|
|||
# TP - Implémentation de l'algorithme de génération d'un JWT en NodeJS
|
||||
|
||||
## Objectifs
|
||||
|
||||
Implémenter **avec la librairie standard** (pas d'installation de modules supplémentaires) de NodeJS un algorithme permettant de générer un [JWT](https://jwt.io/introduction/) valide.
|
||||
|
||||
## Environnement technique
|
||||
|
||||
- NodeJS LTS (v8.9.4)
|
||||
|
||||
## Critères d'évaluation du résultat
|
||||
|
||||
| Critères | Bonus |
|
||||
|----------|-------|
|
||||
| Le script ne contient pas d'erreur de syntaxe. ||
|
||||
| Le code est commenté. ||
|
||||
| Soit un objet et un secret défini préalablement, le script doit afficher sur la sortie standard un JWS valide, vérifiable via [l'outil en ligne de débuggage](https://jwt.io/#debugger) | Le secret et les attributs à encoder dans le JWT sont passable par arguments au script. ||
|
||||
|
||||
<div style="page-break-after:always"></div>
|
||||
|
||||
### Super bonus (pour les plus rapides/motivés)
|
||||
|
||||
Implémenter en installant le module [express](http://expressjs.com/en/starter/installing.html) et [body-parser](https://github.com/expressjs/body-parser) une micro-application web servant les routes suivantes:
|
||||
|
||||
#### GET /login
|
||||
|
||||
Affiche une simple page avec un formulaire de login/mot de passe. Ceux ci peuvent être en dur dans le code de l'application.
|
||||
|
||||
#### POST /login
|
||||
|
||||
Route recevant les paramètres `username` et `password` du formulaire précédent et générant un JWT avec les informations d'identification de l'utilisateur (un simple attribut `username` dans le `payload` est suffisant). Le JWT doit être affiché dans la page de réponse.
|
||||
|
||||
#### GET /profile?jwt={token}
|
||||
|
||||
Route affichant les éléments encodés dans le JWT passé en paramètre. L'absence de JWT valide devrait provoquer des erreurs 401/403 suivant les cas.
|
||||
|
||||
|
||||
## Ressources documentaires
|
||||
|
||||
- [Documentation JWT](https://jwt.io/introduction/)
|
||||
- [NodeJS LTS pour Windows](https://nodejs.org/en/download/)
|
||||
- [Créer une application NodeJS avec Visual Studio Code sur Windows](https://code.visualstudio.com/docs/runtimes/nodejs)
|
||||
- [Module `crypto`](https://nodejs.org/dist/latest-v6.x/docs/api/crypto.html) de NodeJS
|
Loading…
Reference in New Issue