自动续订Kerberos票证



我第一次不得不使用Kerberos身份验证,这有点奏效,但我觉得错过了很多关于发生了什么以及如何正确烹饪的了解。

基本上,我需要的是每隔几个小时运行一次Python脚本,并在MS AD环境中使用域帐户向远程web服务器发送请求。

以下代码为我提供了现成的会话实例:

from requests import Session
import gssapi
from requests_gssapi import HTTPSPNEGOAuth
session = Session()
session.auth = HTTPSPNEGOAuth(mech=gssapi.mechs.Mechanism.from_sasl_name("SPNEGO"))

该脚本被添加到linux盒子中用户的crontab中,kinit用于获得票证授予票证:

kinit -kt ~/ad_user.keytab ad_user@DOMAIN.COM

但过了一段时间,由于车票过期,一切都停止了。解决方案很简单:将kinit添加到crontab中,每8小时运行一次就解决了这个问题。

我想知道是否有更好、更合适的方法来实现同样的目标?如果我不想/需要在AD中为服务器创建主体,而只是希望某些代码始终具有有效票证,那么我可以避免在用户的crontab中有专用任务吗?

为什么不直接在代码中启动票证缓存?这可能有助于提高作业依赖kerberos登录及其位置的透明度。(5年后,当你回到这个代码时,它将很难记住,这可能会为你以后节省一些悲伤。(

它还将有助于确保某人不会通过删除cron作业意外禁用您的作业。

使用keytab 从python脚本中获取kinit

我会在每个需要身份验证以减少外部依赖性的脚本中都这样做。

最新更新