Je me demande si quelqu'un a une solution élégante pour vérifier un ticket Kerberos valide en utilisant Python. Je ne vois pas de toute façon avec kinit
ou klist
qui montrera si un ticket a expiré avec un code de retour mais je pourrais exécuter klist
et utiliser une regex pour la sortie.python: valider ticket Kerberos
6
A
Répondre
3
Vous avez deux options: la première est d'utiliser 'klist -s' et de vérifier le code retour. L'option plus agréable est d'utiliser le module python-krbV:
import krbV
def has_ticket():
'''
Checks to see if the user has a valid ticket.
'''
ctx = krbV.default_context()
cc = ctx.default_ccache()
try:
princ = cc.principal()
retval = True
except krbV.Krb5Error:
retval = False
return retval
4
Une autre option est de vérifier l'état de la sortie de « klist -s » semble plus courte et ne pas utiliser krbV:
import subprocess
def has_kerberos_ticket():
return True if subprocess.call(['klist', '-s']) == 0 else False
+1
Plus succinctement, 'return pas subprocess.call (['klist', '-s'])'? – scubbo
Notez que ce ne sont pas equivalent: klist -s sort également non nul s'il y a un ccache avec un TGT, mais le TGT a expiré. Le code krbV ci-dessus ne vérifie pas si le ticket a expiré; seulement qu'il y a un ccache (en lisant le principal par défaut). Et, le PO a spécifiquement posé des questions sur l'expiration du ticket. –
Qu'en est-il de Python 3? krbV ne semble pas fonctionner. – dmranck
Un, il ne compile pas. Deuxièmement, cela ne répond pas à la question. Il n'a aucune information sur si le billet a expiré ou non. Apprenez à écrire des réponses qui répondent réellement à la question, au lieu de vomir des déchets aléatoires. –