Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2022-05-17T22:16:42+02:00Les derniers messages parus sur le forum de Zeste de Savoir.python, generer un token tous les minutes, message #2430462022-05-17T22:16:42+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243046<p>je vais le faire avec ssh et non pas oauth2</p>python, generer un token tous les minutes, message #2430242022-05-17T09:52:58+02:00Moté/@Mot%C3%A9https://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243024<p>Bonjour,</p>
<p>Si j’ai bien compris, ton projet est d’exécuter du code python sur un serveur distant, c’est bien ça ? Il existe déjà des trucs pour ça :</p>
<ul>
<li><a href="https://rpyc.readthedocs.io/en/latest/">RPyc</a>, pour exécuter du code concourant sur plusieurs machines</li>
<li><a href="https://www.ansible.com/">Ansible</a>, qui permet notamment de créer des scripts de déploiement à distance avec gestion de parcs de serveurs</li>
</ul>
<p>Le mieux serait que tu regardes comment font ces systèmes, parce qu’il s’agit d’outils développés par des professionnels et réputés, très solides. En l’occurrence, ils utilisent tous les deux SSH, qui permet de configurer très facilement l’accès (rentrer les paramètres de connexion, le chemin vers la clé SSH, et voilà). D’autant plus que SSH est disponible sur tous les serveurs par défaut.</p>
<p>Edit : par ailleurs, je doute de l’intérêt de faire du calcul distribué avec Python quand on voit la performance et la consommation du langage, malheureusement.</p>
<p>Edit bis : par ailleurs, juste pour prévenir, développer une solution de calcul distribué, c’est pas une sinécure. J’ai un oncle qui a fait ça en java, autant te dire qu’il est de base très calé et que ça lui a pris un paquet de temps.</p>python, generer un token tous les minutes, message #2430152022-05-16T22:54:57+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243015<p>je n’ai pas, n’avais pas , et n’aurai pas l’intention de me moquer </p>
<blockquote>
<p>Au vu des messages que tu as postés précédemment, j’ai l’impression que la sécurité n’est pas quelque chose que tu maîtrises.</p>
</blockquote>
<p>desole de mon arrogance c’etait tres bete de ma part</p>
<blockquote>
<p>Je voulais simplement te mettre en garde quant au fait de pouvoir exécuter du code arbitraire sur un serveur.</p>
</blockquote>
<p>si tu le dis, je pense (c’est plus complique ) mais si je creer une vm dans le server permettrais au code de rester dans la vm et donc de ne pas lire/ecrire les fichiers du server </p>
<p>ou encore de bloquer les operation de read/write cad que ce fichier n’aurai que des droist tres restrin </p>
<p>mais juste une toute petite remarque : si le cleint decide de supprimer son server c’est son choix oui donc il a le droit , mais oui si quelq’un de malveillant arrive a obtenir le token la on est mal <img src="/static/smileys/svg/triste.svg" alt=":(" class="smiley"></p>python, generer un token tous les minutes, message #2430142022-05-16T22:48:09+02:00FougereBle/@FougereBlehttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243014<p>Ce n’est pas la peine de prendre un ton moqueur. Au vu des messages que tu as postés précédemment, j’ai l’impression que la sécurité n’est pas quelque chose que tu maîtrises.</p>
<p>Je voulais simplement te mettre en garde quant au fait de pouvoir exécuter du code arbitraire sur un serveur.</p>
<p>Maintenant, si tu penses que c’est OK, alors vas-y. Mais si ton app tombe au bout de quelques minutes, tu sauras pourquoi.</p>python, generer un token tous les minutes, message #2430132022-05-16T22:29:17+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243013<p>et bien c’est la meme chose pour ssh alors ! et il faut d’abord craque le token alors oui si il craque le token
il pourra acceder mais croie moi ce serai pas super facil d’aileurs avec un shell aussi on peut faire tout hein ? donc mon idee(non pas le code) est aussi securise que ssh (Secure Shell)</p>
<p>ne croie pas que je pense ceci:</p>
<p>ah tiens aujourd’hui je m’ennuie hmmm <img src="/static/smileys/svg/huh.svg" alt=":o" class="smiley"> qu’est ce que je vais faire ah oui un outil qui permet mettre en danger tous les servers et permet a tous le monde d’executer du code sur le server (ca s’appelle une backdoor d’ailleurs) ah ah ah je suis diabolique <img src="/static/smileys/svg/diable.svg" alt=":diable:" class="smiley"> </p>
<p>oui effectivement avec du code on peut tout faire meme coder un server web en assembleur <img src="/static/smileys/svg/rire.svg" alt=":lol:" class="smiley"> </p>python, generer un token tous les minutes, message #2430122022-05-16T22:19:32+02:00FougereBle/@FougereBlehttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243012<p>C’est pas juste une histoire de code, là. Exécuter du code arbitraire sur un serveur, c’est la possibilité d’en faire ce que l’on veut. N’importe qui avec un minimum de compétence pourra faire ce qu’il veut du serveur, et des données qui y sont stockés.</p>python, generer un token tous les minutes, message #2430032022-05-16T21:12:22+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=2#p243003<p>en vrais cela peut etre util il faut juste bien le coder </p>python, generer un token tous les minutes, message #2430012022-05-16T21:01:17+02:00FougereBle/@FougereBlehttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p243001<figure><blockquote>
<p>en faite ma lib que je veux creer permet d’executer du code python a distance donc si il a le token il peux executer du code python a distance</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242999">NightProg</a></figcaption></figure>
<p>Pas sûr que ce soit une si bonne idée…</p>python, generer un token tous les minutes, message #2429992022-05-16T20:04:51+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242999<p>en faite ma lib que je veux creer permet d’executer du code python a distance donc si il a le token il peux executer du code python a distance</p>python, generer un token tous les minutes, message #2429982022-05-16T19:50:35+02:00Migwel/@Migwelhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242998<blockquote>
<p>ah probleme quand le token expirai , il faut donc le regenerer alors un nouveau thread apparait qui va s’expirer etc alors python se crash du au nombre important de thread que j’ai creer</p>
</blockquote>
<p>Tu n’as pas besoin d’un thread par token. Si tu sais que les tokens sont valides pendant 1 jour, tu peux lancer un thread par jour qui va tous les rafraichir.</p>
<blockquote>
<p>une autre chose ou stocker ce token parce que par example si tu le stockes quelque part dans le server </p>
</blockquote>
<p>Une fois encore, ça dépend de ton utilisation et de quand/dans quel contexte tu utilises le token. Si sa durée de vie n’est que de quelques minutes, tu ne le stockeras pas en base de données mais tu stockeras uniquement le refresh_token. Mais oui, le chiffrer peut être une bonne idée. Aussi, il est important de ne demander que les accès nécessaires au bon fonctionnement de ton token. Si ton application ne fait que lire des données, rien ne sert de demander des droits en écriture. Ainsi, si le token fuite, le hacker n’obtiendra que des droits limités.</p>
<blockquote>
<p>et si malheuresement un program malveillant arrive a le lire alors il peut executer du code a distance</p>
</blockquote>
<p>Je ne vois pas ce que tu veux dire ici.</p>python, generer un token tous les minutes, message #2429972022-05-16T19:07:56+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242997<p>super , a zds a tout <img src="/static/smileys/svg/heureux.svg" alt=":D" class="smiley"> </p>
<blockquote>
<p> Soit tu fais ça de façon planifiée (comme tu le mentionnais plus tôt avec ton Timer)</p>
</blockquote>
<p>ah probleme quand le token expirai , il faut donc le regenerer alors un nouveau thread apparait qui va s’expirer etc alors python se crash du au nombre important de thread que j’ai creer</p>
<p>une autre chose ou stocker ce token parce que par example si tu le stockes quelque part dans le server et si malheuresement un program malveillant arrive a le lire alors il peut executer du code a distance , don cfaut il le crypter ? </p>python, generer un token tous les minutes, message #2429962022-05-16T19:02:52+02:00Migwel/@Migwelhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242996<p>Ca tombe bien, on a <a href="https://zestedesavoir.com/articles/1616/comprendre-oauth-2-0-par-lexemple/">un tutoriel sur OAuth 2.0</a>.</p>
<p>Et en effet, dans ce cas, il est nécessaire de rafraichir son token de temps en temps. Soit tu fais ça de façon planifiée (comme tu le mentionnais plus tôt avec ton Timer), soit tu le fais à la demande (quand un utilisateur veut utiliser un token et tu remarques qu’il est expiré, tu le rafraichis d’abord avant de l’utiliser). En fonction du type d’utilisation auquel tu t’attends, une approche peut être plus appropriée que l’autre.</p>python, generer un token tous les minutes, message #2429942022-05-16T17:57:29+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242994<p>oui , je croie que oui pour auth2.0</p>
<blockquote>
<p>À la fin de la date de validité, le client doit se ré-authentifier.</p>
</blockquote>
<p>oui, je me suis tres mal exprime <img src="/static/smileys/svg/triste.svg" alt=":(" class="smiley"></p>
<blockquote>
<p>Ou même (à la fois plus facile et bien plus sécurisant), de carrément de déléguer l’auth au transport réseau en reposant directement sur SSH comme le fait par exemple rpyc.</p>
</blockquote>
<p>interresant <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>
<blockquote>
<p>Vraiment, fais l’effort de développer ce que tu cherches à faire : explique-moi comme si j’avais 5 ans ou comme si c’était à moi de le coder, comment fonctionnerait ton authentification ?</p>
</blockquote>
<p>bon, meme moi c’est confus pour ce que je cherche , je voulais une technique pour etre sur que le client a les pouvoirs nécessaire pour acceder un server </p>python, generer un token tous les minutes, message #2429912022-05-16T10:52:03+02:00Migwel/@Migwelhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242991<p><a href="/@NightProg" rel="nofollow" class="ping ping-link">@<span class="ping-username">NightProg</span></a>, pourrais-tu préciser de quel genre de tokens tu parles et de comment tu les utilises ? En lisant ta question, j’ai l’impression que tu parles de tokens OAuth2.0 (ou similaires) mais j’ai peut-être mal compris.</p>python, generer un token tous les minutes, message #2429862022-05-16T10:07:06+02:00SpaceFox/@SpaceFoxhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242986<figure><blockquote>
<p>D’une façon générale, créer un système d’authentification "maison" est presque toujours une très mauvaise idée. Pour tout ce qui touche à la sécurité, il est systématiquement préférable d’utiliser des standards et de outils existants lorsque c’est possible.</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242981">nohar</a></figcaption></figure>
<p>Un énorme +1 à ceci. C’est déjà assez compliqué de faire fonctionner un système d’authentification bien connu et sécurisé sans casser sa sécurité. Improviser quelque chose hors des standards, c’est la garantie d’obtenir une « sécurité » complètement cassée.</p>
<p>D’autre part :</p>
<ul>
<li><a href="https://apereo.github.io/cas/6.5.x/ticketing/Configuring-Ticketing-Components.html">Le stockage d’informations relatives au ticket reste nécessaire si on ne veut pas perdre toutes les informations au redémarrage du serveur de ticket</a>. Ça implique de chiffrer ces informations, même si elles sont simplement conservées dans la mémoire du serveur.</li>
<li>On doit <strong>toujours</strong> vérifier qu’un JWT est sécurisé, cf <a href="https://datatracker.ietf.org/doc/html/rfc7519#section-6">la section 6 de la RFC</a> (sinon, n’importe qui peut envoyer un ticket sans signature qui contiendra n’importe quoi et sera considéré comme valide).</li>
<li>Le JWT lui-même est résistant au transport sur un canal ouvert <em>si la clé de vérification a été transmise par un canal sécurisé</em> (et que le ticket lui-même est sécurisé, cf le point précédent).</li>
<li>Par contre, TLS sur la couche de transport dudit ticket (typiquement du HTTPS) reste nécessaire <a href="https://datatracker.ietf.org/doc/html/rfc7519#section-12">si le ticket lui-même contient des informations sensibles si lues par un tiers</a>, ou pour à peu près toutes les utilisations faites avec ce ticket. Donc autant la mettre partout où c’est possible.</li>
</ul>python, generer un token tous les minutes, message #2429822022-05-16T09:52:45+02:00ache/@achehttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242982<p>Ne regénère pas un <em>token</em> automatiquement. Normalement, un <em>token</em> est lié à une date de validité. Elle n’est pas sencé être extensible.</p>
<p>À la fin de la date de validité, le client doit se ré-authentifier. </p>
<p>Sinon tu perds l’intérêt d’une date de validité.</p>python, generer un token tous les minutes, message #2429812022-05-16T07:54:35+02:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242981<p>Ok, alors là je comprends encore moins la pertinence d’utiliser des tokens tout court, plutôt que la même chose que des systèmes déjà existants comme SSH (avec un échange de clés). Ou même (à la fois plus facile et bien plus sécurisant), de carrément de déléguer l’auth au transport réseau en reposant directement sur SSH comme le fait par exemple <a href="https://rpyc.readthedocs.io/en/latest/">rpyc</a>.</p>
<p>Vraiment, fais l’effort de développer ce que tu cherches à faire : explique-moi comme si j’avais 5 ans ou comme si c’était à moi de le coder, comment fonctionnerait ton authentification ?</p>
<p>D’une façon générale, créer un système d’authentification "maison" est presque toujours une très mauvaise idée. Pour tout ce qui touche à la sécurité, il est systématiquement préférable d’utiliser des standards et de outils existants lorsque c’est possible.</p>python, generer un token tous les minutes, message #2429802022-05-16T01:08:00+02:00NightProg/@NightProghttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242980<blockquote>
<p>En particulier, qu’il cherche un moyen de déclencher une action à intervalles réguliers de façon concurrente avec le fil d’exécution principal</p>
</blockquote>
<p>oui
bon, imaginons qu’un client veut envoyer un script python pour qu’il s’execute sur le server, il va utiliser pyscmd (ma lib) mais il faut aussi que pyscmd soit installe sur le server et donc pendant l’installation pyscmd genera un token et c’est ce token qui va se regenerer tous les jours/mois pour s’authentifier</p>python, generer un token tous les minutes, message #2429792022-05-16T00:41:24+02:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242979<blockquote>
<p>Je décrivais le fonctionnement d’un jeton classique !</p>
</blockquote>
<p>Au temps pour moi, la façon dont ton post est tourné le laissait à penser.</p>
<p>J’ai l’impression que l’OP mélange plusieurs problèmes. En particulier, qu’il cherche un moyen de déclencher une action à intervalles réguliers de façon concurrente avec le fil d’exécution principal… Alors qu’il n’en a pas besoin à la base.</p>
<p>Ça ressemble assez fort à un cas de XY problem.</p>python, generer un token tous les minutes, message #2429782022-05-16T00:31:59+02:00ache/@achehttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242978<blockquote>
<p>Légèrement HS mais pas tant que ça :</p>
<blockquote>
<p>Ensuite, tu stockes la correspondance entre jeton, utilisateur et date de validité dans une BDD et puis c’est bon.</p>
</blockquote>
<p>Je ne vois pas pourquoi il y aurait besoin de stocker cette correspondance dans une BDD, dès lors que ces informations (dates de validité — début de validité et expiration — et au moins l’id de l’utilisateur) sont embarquées dans le JWT et que celui-ci est signé cryptographiquement.</p>
</blockquote>
<p>Je décrivais le fonctionnement d’un jeton classique ! Pas de JWT. Ça ne colle pas du tout avec le fonctionnement de JWT, j’ai juste vérifié qu’il ne voulait pas un jeton JWT.</p>
<p>Mais je ne comprend toujours pas pourquoi l’OP veut utiliser les threads, qui devraient être utilisé par requêtes, éventuellement, mais pas spécifiquement pour la génération des jetons.</p>
<blockquote>
<p>bon merci je regarderai jwt , au debut j’avais un truc qui utilise threading.Timer mais le probleme quand le token expirais il fait en regener et donc faire un nouveau thread ca me fesait cet erreur:</p>
</blockquote>
<p>Mais là par exemple, je ne comprend pas pourquoi il y a une option spéciale pour régénérer.</p>python, generer un token tous les minutes, message #2429772022-05-15T23:42:48+02:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/16268/python-generer-un-token-tous-les-minutes/?page=1#p242977<p>Légèrement HS mais pas tant que ça :</p>
<blockquote>
<p>Ensuite, tu stockes la correspondance entre jeton, utilisateur et date de validité dans une BDD et puis c’est bon.</p>
</blockquote>
<p>Je ne vois pas pourquoi il y aurait besoin de stocker cette correspondance dans une BDD, dès lors que ces informations (dates de validité — début de validité et expiration — et au moins l’id de l’utilisateur) sont embarquées dans le JWT et que celui-ci est signé cryptographiquement.</p>
<p>Au contraire, les stocker dans une BDD me semble peindre une grosse cible en rouge sur cette BDD pour d’éventuels attaquants désireux d’usurper l’identité des utilisateurs…</p>
<p>Du moment que l’algo utilisé pour signer le token est fiable (<strong>et que le transport sur le réseau est chiffré</strong>), il suffit de vérifier la signature pour s’assurer de l’authenticité des informations embarquées d’une part, et du fait que le jeton a été signé par "nous" ou en tout cas par l’acteur responsable d’authentifier le porteur.</p>
<p>C’est exactement ce qui se passe quand on vérifie un token provenant d’un fournisseur d’identité tiers comme google/apple/facebook/… en utilisant le protocole openid connect : on vérifie la signature du JWT en utilisant la clé publique du <em>provider</em>, ainsi que les <em>claims</em> embarqués dedans comme sa période de validité, le fait qu’il a bien été généré pour notre application ("audience"), par le provider lui-même ("issuer"), etc.</p>
<p>Cela m’amène au problème de ce topic : ok il est donc question de faire de l’authentification, mais je ne vois pas du tout pourquoi il y aurait besoin de générer un token automatiquement à intervalles réguliers.</p>
<p>En général, on fournit un token avec une date d’expiration, et on dispose d’un point d’accès qui permet de rafraîchir ce token, en laissant la responsabilité au client de rafraîchir régulièrement son token pour rester authentifié.</p>
<p>Du coup ce que l’on attend de toi <a href="/@NightProg" rel="nofollow" class="ping ping-link">@<span class="ping-username">NightProg</span></a> c’est que tu nous décrives comment fonctionne ton système d’auth afin de comprendre dans quel contexte tu peux avoir besoin de générer périodiquement des tokens aléatoires… Parce que dit comme ça, ça semble louche.</p>