1 回答
TA贡献2041条经验 获得超4个赞
通常 Kerberos 客户端不直接使用密钥表;他们希望初始票已经获得并存在于环境中。也就是说,您应该kinit在运行程序之前,然后客户端的 GSSAPI 库查找KRB5CCNAME环境变量,该变量指向包含 kinit 留下的票证缓存的文件。
(通常对于 MIT Kerberos 或 Heimdal,它可能是除文件之外的许多其他东西......但是'pq'库使用非常小的纯 Go Kerberos 实现,它只接受传统的基于文件的 ccache。所以如果 Krb5 on您的发行版设置为使用“DIR”或“KEYRING”或“KCM”缓存类型,这些在此处不起作用。)
如果初始票不KRB5_CLIENT_KTNAME存在,如果环境变量指向一个,MIT Krb5 实现实际上将自动使用密钥表来获取票。不幸的是,'pq' 库不使用系统 Kerberos 库,因此它在这里也不起作用。(但如果您的操作系统使用的是 Heimdal Kerberos,它也不会工作;它是 MIT 特定的扩展。)
因此,始终有效的方法是将KRB5CCNAME 设置为临时路径,然后在运行程序之前使用kinit或k5start从密钥表获取票证。(k5start 工具还会在票过期之前自动续订或重新获取票,无需使用 cron。)
真的,整个krb_unix.go文件都令人失望。如果他们可以在 Windows 上调用本机 SSPI,那么他们当然可以在 Linux 上调用本机 GSSAPI ...
- 1 回答
- 0 关注
- 177 浏览
添加回答
举报
