尽管授权标头中包含 Kerberos 票证,但对 Kerberos 身份验证 API 的请求仍被视为未经授权

尽管授权标头中包含 Kerberos 票证,但对 Kerberos 身份验证 API 的请求仍被视为未经授权

我正在尝试调用 Flask API 端点(http://monarch.example.com:8080/) 托管在 Linux 机器上的 Apache Web 服务器中。此端点受 Kerberos 身份验证保护。我用它kinit user来初始化 Kerberos。

然后我使用 python kerberos 库来获取票据并请求 api 调用的库。我在请求的授权标头中提供票据。相关代码片段:

`__, krb_context = kerberos.authGSSClientInit("[email protected]")
kerberos.authGSSClientStep(krb_context, "")
auth_header = ("Negotiate " + kerberos.authGSSClientResponse(krb_context))
headers = {"Authorization": auth_header}`

我已经检查授权标头是否填充了值。

然而我得到的响应是 401-unauthorized。

/etc/apache2/sites-available/monarch.conf包含端点的服务的Kerberos 配置是:

<Directory /var/www/monarch>
       AuthType Kerberos
       AuthName "Acme Corporation"
       KrbAuthRealms EXAMPLE.COM
       KrbMethodNegotiate Off
       KrbSaveCredentials Off
       KrbVerifyKDC Off
       KrbMethodK5Passwd On
       # Krb5Keytab /etc/apache2/http.keytab
       Krb5keytab /etc/krb5.keytab
       Require user [email protected]
</Directory>

最后,校长名单如下:

host/[email protected]
HTTP/[email protected]
K/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
[email protected]
root/[email protected]

我已经被这个问题困扰了好几天了。如果有人能在这方面帮助我,那就太好了。

相关内容