API REST en PowerShell – développez avec Polaris !

API REST en PowerShell

Salut à tous, on va se faire un joli morceau aujourd’hui. On va voir comment développer une API REST en PowerShell et du comment coup piloter des scripts via du CURL sur linux, ou avec Invoke-RESTMethod en PowerShell.

Notez que cet article a été rédigé en collaboration avec ArnaudPETITJEAN de PowerShell-Scripting.com. Merci à lui !

C’est quoi une API REST ?

C’est un peu complexe à définir entièrement, d’ailleurs la définition de Wikipédia est floue au possible, mais je pense qu’on peut faire simple en disant que c’est simplement une API (bravo Sherlock… et si vous ne savez pas ce qu’est une API, je pense que c’est pas la peine d’aller plus loin 😉 ). Une API REST s’appelle non pas en important une bibliothèque dans un script (comme en C ou Python par exemple) mais en faisant une simple requête Web HTTP(S). L’action sera exécutée par le serveur qui expose l’API et vous pourrez exploiter le résultat directement dans votre script.

Les API REST sont à la mode depuis quelques années, notamment chez les DevOps. Elles présentent souvent les avantages d’être simples, interopérables, légères et accessibles à distance. Si vous cherchez des alternatives à REST, vous … Lire la suite

NGINX avec une authentification Kerberos

Salut à tous, ça vous dirait d’apprendre à configurer NGINX avec une authentification Kerberos sous CentOS 7 ? C’est le sujet d’aujourd’hui, vu que j’ai eu besoin de le faire au boulot récemment. Il s’avère que c’est un poil plus suant qu’avec Apache. Bref on y va.

Kerberos ?

Pour ceux qui ne savent pas ce que c’est, kerberos est un protocole d’authentification. Sa particularité est de reposer sur des clés secrètes partagées entre le client et un serveur tiers (le KDC). Vous trouverez pas mal de documentations, plus ou moins exactes, sur le net (c’est un protocole qui date un peu et qui n’est pas forcément super intuitif non plus). On peut vulgariser son utilisation ainsi :

  • A l’ouverture de votre session, le KDC vous délivre un TGT (Ticket Granting Ticket) protégé par un secret partagé entre vous et le KDC.
  • Lorsque vous souhaitez accéder à un service authentifié en kerberos (genre un site web), vous demandez au KDC un TGS (Ticket Granting Service) pour ce service, à l’aide de votre TGT. Ce TGS est protégé (en partie) par la clé secrète du service (que le service partage de son côté avec le KDC)
  • Il vous suffit alors
Lire la suite

Authentification par certificat client sur nginx

Authentification par certificat client sur nginx

Salut à tous, aujourd’hui on m’a demandé de regarder comment faire de l’authentification par certificat x509 sur un serveur Nginx. Je parle bien ici du client, pas du certificat serveur que vous obtenez avec let’s encrypt par exemple. Donc pour accéder au site web l’utilisateur devra présenter un certificat valide de l’AC que vous aurez défini.

Un certifi-quoi ?

Dans les faits, vous utilisez déjà des certificats x509 (délivrés par let’s encrypt, par exemple) pour authentifier votre site auprès de vos utilisateurs (et comme base pour chiffrer la connexion en HTTPS aussi). Ici ce qu’on souhaite faire c’est l’inverse, c’est à dire que le serveur va demander aux utilisateurs de s’authentifier, en présentant un certificat, avant de les laisser accéder au site.

Alors je suis désolé pour ceux qui ne captent rien aux certificats, ce n’est pas l’objet de cet article. Je pars du postula que si vous cherchez à authentifier vos clients par certificats, c’est que vous savez déjà ce que c’est… Sinon, je vous renvoi quand même (je suis sympa) vers ces sources (ici, , , et ) qui ne sont pas trop mauvaises. Mais ne rêvez pas trop, un bon cours sur … Lire la suite

Détecter l’authentification sur un site web

Hacking

Allez aujourd’hui quelques petites commandes pour les équipes qui veulent vérifier ou détecter l’authentification sur les sites web de leur société est bien en place…
Il n’y a pas beaucoup de solution qui font ça « correctement ». Notamment parce que les méthodes d’authentifications varient fortement d’un site à l’autre (formulaire applicatif, SMB/NTLM, HTTP standard, certificat) mais en voilà quelques une pour commencer.

Détecter l’authentification sur un site web

A la main, comme les vieux !

Par exemple, on peut utiliser wget accompagné de grep ou n’importe quel parseur de page web (PhantomJS par exemple) à la recherche de lien ou de champs type « login/mot de passe » :

titi@debian:~$ wget -qO- geekeries.org | grep login | wc -l 
1
titi@debian:~$ # pour le moins vieux, avec curl ça marche aussi...
titi@debian:~$ curl geekeries.org | grep login | wc -l
1

Soit la réponse est zéro, et on n’a pas trouvé de login, soit c’est un ou plus et il existe probablement une authentification par formulaire sur le site. Ce n’est pas super propre et il faut essayer tout ce qu’a pu imaginer le développeur du site comme nom pour les champs de « login » mais ça … Lire la suite