python: 验证kerberos票据
我在想,有没有人能用Python优雅地检查一个有效的Kerberos票据。通过kinit
或klist
这两个命令,我没有找到能直接显示票据是否过期的返回代码。不过,我可以运行klist
,然后用正则表达式来处理输出结果。
2 个回答
10
另一个选择是检查 'klist -s' 的退出状态,这样看起来更简洁,而且不需要用到 krbV:
import subprocess
def has_kerberos_ticket():
return True if subprocess.call(['klist', '-s']) == 0 else False
3
你有两个选择:第一个是使用 'klist -s' 命令,然后检查返回的结果代码。第二个更简单的方法是使用 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