用于 MacOS 上 Kerberos 身份验证的 SPNEGO/GSS-API Golang 包

问题描述 投票:0回答:1

这是我对我的帖子的查询浏览器如何获取 Kerberos TGT 和服务票证。感谢 user1686 对该帖子的详细解释。

对于 Windows 平台上的应用程序,我使用了 github.com/alexbrainman/sspi 包,它提供 API 来获取用户凭据和必要的 kerberos 令牌以进行身份验证。

我现在需要在 MacOS 平台上执行相同的操作,但无法使用 alexbrainman/sspi,因为它仅适用于 Windows。到目前为止,根据我的研究,我认为 https://pkg.go.dev/gopkg.in/jcmturner/gokrb5.v8 是适合在 MacOS 上使用的软件包。但唯一的问题是 MacOS 上的每个用户都必须提供 keytab 文件,因为 gokrb5 包不提供任何 API 来直接获取用户的凭据(纠正我,我错了)。对于我可以在 MacOS 上探索 Kerberos 身份验证的任何其他 Golang 软件包有什么建议吗?

macos kerberos
1个回答
0
投票

大多数 Unix 系统提供 GSS API 接口,这是相当于 Windows 的 SSPI 的“标准”接口。 (函数名称和常量不同,但所有基本原理都是相同的。)

据我所知,macOS 中的 Kerberos 接口是

Kerberos.framework
,它只是 Heimdal Kerberos 的供应商分支,并且仍然支持与 Linux 上相同的 GSSAPI 接口。

因此您应该寻找提供 C GSSAPI 绑定的包。乍一看,openshift/gssapi应该可以工作——尽管它没有维护,但它特别提到 macOS 是兼容的。不管怎样,GSSAPI 自 8 年前以来确实没有发生太大变化,所以我仍然从那里开始。


纯 Go 实现可能是可能的,因为 Unix 系统上的凭证是“公开”存储的——没有真正相当于 LSASS 的东西(除了 Linux 上最近的 gss-proxy,但我认为 macOS 没有相等的);相反,Kerberos 库直接从凭证缓存中读取票证和会话密钥。问题是 macOS 使用不同的方法来访问缓存(它使用 Unix 套接字或 Mach IPC,而不是普通文件),我怀疑任何“纯 Go”模块都不会这样做。

© www.soinside.com 2019 - 2024. All rights reserved.