python: 验证kerberos票据

10 投票
2 回答
10809 浏览
提问于 2025-04-16 00:35

我在想,有没有人能用Python优雅地检查一个有效的Kerberos票据。通过kinitklist这两个命令,我没有找到能直接显示票据是否过期的返回代码。不过,我可以运行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

撰写回答