diff --git a/README.md b/README.md index 80f6dec2a1c2a43489e64e57b3e0da33f0aa46d9..01fe7c92beb204814be077a92b0292b2491a5b01 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,8 @@ Dans notre cas précis, nous allons utiliser la ligne de commande : $ curl http://localhost:8080/students ``` +Réponse : + ```json [ { @@ -564,8 +566,13 @@ func basicAuth(router *gin.Engine) { Voici le résultat visualisé dans Postman : 1. Si nous ne sommes pas connectés, l'erreur 401 - unauthorized est retournée + + + 2. Si nous ne sommes pas connectés, l'erreur 200 - OK est retournée + + ### Implémenter un OIDC consumer en utilisant Okta Pour la partie des enseignants, il a fallu implémenter un OIDC consumer en utilisant Okta. Pour commencer, il a fallu @@ -776,10 +783,38 @@ func oktaAuth(router *gin.Engine) { Pour vérifier le bon fonctionnement de notre token JWT, il a fallu vérifier la bonne implémentation avec Postman. 1. Générer le code d'accès pour récupérer le Token -2. Générer le Token -3. L'utiliser pour les requêtes sur les enseignants -// TODO Screen + + +Il faut exécuter le lien dans votre navigateur préféré et se connecter avec un compte qui a été créer au préalable. + +Le code se situe dans l'Url retourné. + +Par exemple, dans mon cas, l'Url retourné est le suivant : + +http://localhost:8080/authorization-code/callback?code=ezBFqHWR5T-2Mb9MgwOwbMmVwEmHpPW2YFNp9_Q5F_8&state=100 + +Il faut donc récupérer le code entre le "code=" et le "&". + +3. Générer le Token + + + +Remplir le champ "code" par le code généré à l'étape 2. Le token est retourné dans le JSON dans le champ "Access token". + +4. L'utiliser pour les requêtes sur les enseignants + + 1. Si nous ne sommes pas connectés, l'erreur 401 - unauthorized est retournée + +  + + 2. Si nous ne sommes pas connectés, l'erreur 200 - OK est retournée + +  + 3. Si le token est incorrect, l'erreur 403 - Forbidden est retournée + +  + Comme nous avons créé trois utilisateurs, il a fallu les utiliser. J'ai donc implémenté les autorisations suivantes : @@ -1059,4 +1094,7 @@ func oktaAuth(router *gin.Engine) { ``` +Pour une question de practicité et que ce projet reste un exercice, je n'ai pas déplacé le fichier `.env` dans un Git +à part. Sinon, il aurait fallu cacher ce fichier aux éventuels regards malveillants. + Voilà. Vous avez une RESTful API complétement fonctionnelle et sécurisée ! \ No newline at end of file diff --git a/img/getToken.png b/img/getToken.png new file mode 100644 index 0000000000000000000000000000000000000000..698388deed71e533c4eab369535025e2a517faa0 Binary files /dev/null and b/img/getToken.png differ diff --git a/img/img1.png b/img/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..23ddba0789094df9012bdb2968b7286c745a3bc6 Binary files /dev/null and b/img/img1.png differ diff --git a/img/imgForbidden.png b/img/imgForbidden.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ef482a721802a9272df465097787311710a178 Binary files /dev/null and b/img/imgForbidden.png differ diff --git a/img/imgGetAccessToken.png b/img/imgGetAccessToken.png new file mode 100644 index 0000000000000000000000000000000000000000..49804640beec39819d0a70ecc19876d5ebb44e94 Binary files /dev/null and b/img/imgGetAccessToken.png differ diff --git a/img/imgNoAuthTeachers.png b/img/imgNoAuthTeachers.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e52d10bd3a311e476ed558c4007cc72bad8f0a Binary files /dev/null and b/img/imgNoAuthTeachers.png differ diff --git a/img/imgTeachers.png b/img/imgTeachers.png new file mode 100644 index 0000000000000000000000000000000000000000..660435de2f08373762b8ea0fe17b17395a64d7d4 Binary files /dev/null and b/img/imgTeachers.png differ diff --git a/img/imgUnauthorize.png b/img/imgUnauthorize.png new file mode 100644 index 0000000000000000000000000000000000000000..d0434b7459c300a392fdf57581a154dd1091bec3 Binary files /dev/null and b/img/imgUnauthorize.png differ diff --git a/main.go b/main.go index a3c921f4c3cf3398785bc6a280a12ac41eb67185..6a4ac066c725f566826be439a8f0db98ca99d2af 100644 --- a/main.go +++ b/main.go @@ -181,7 +181,6 @@ func verify(c *gin.Context) bool { // Authorizations by user sub := jwt.Claims["sub"].(string) - if targetAuth, ok := authorization[sub]; ok { m := c.Request.Method