自动续订 Kerberos 票证
Auto renew the Kerberos ticket
我不得不第一次使用 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
但过了一会儿,由于票过期,一切都停止了。解决方案很简单:每 8 小时将 kinit
添加到 crontab 到 运行 即可解决问题。
我想知道是否有更好更合适的方法来实现同样的目标?如果我不 want/need 在 AD 中为服务器创建主体,而只是希望一些代码始终具有有效票证 - 我可以避免在用户的 crontab 中有专门的任务吗?
为什么不直接在代码中启动票证缓存?这可能有助于使您的工作更加透明,因为您的工作依赖于 kerberos 登录及其所在的位置。 (5 年后,当你再次看到这段代码时,它会很难记住,这可能会让你以后免去一些悲伤。)
这也有助于确保其他人不会通过删除 cron 作业而意外禁用您的作业。
kinit from python script using keytab
我会在每个需要身份验证的脚本中执行此操作以减少外部依赖性。
我不得不第一次使用 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
但过了一会儿,由于票过期,一切都停止了。解决方案很简单:每 8 小时将 kinit
添加到 crontab 到 运行 即可解决问题。
我想知道是否有更好更合适的方法来实现同样的目标?如果我不 want/need 在 AD 中为服务器创建主体,而只是希望一些代码始终具有有效票证 - 我可以避免在用户的 crontab 中有专门的任务吗?
为什么不直接在代码中启动票证缓存?这可能有助于使您的工作更加透明,因为您的工作依赖于 kerberos 登录及其所在的位置。 (5 年后,当你再次看到这段代码时,它会很难记住,这可能会让你以后免去一些悲伤。)
这也有助于确保其他人不会通过删除 cron 作业而意外禁用您的作业。
kinit from python script using keytab
我会在每个需要身份验证的脚本中执行此操作以减少外部依赖性。