Python authGSSServerInit从keytab中查找错误条目
我正在尝试使用python kerberos(1.0.90-3.el6)初始化GSSAPI服务器端身份验证的上下文我的问题是myserver.localdomain被转换为myserver-我给定主体的一部分在某处被截断。为什么会发生这种情况? 失败示例:Python authGSSServerInit从keytab中查找错误条目,python,kerberos,Python,Kerberos,我正在尝试使用python kerberos(1.0.90-3.el6)初始化GSSAPI服务器端身份验证的上下文我的问题是myserver.localdomain被转换为myserver-我给定主体的一部分在某处被截断。为什么会发生这种情况? 失败示例: >>> import kerberos >>> kerberos.authGSSServerInit("HTTP@myserver.localdomain") Traceback (most recent
>>> import kerberos
>>> kerberos.authGSSServerInit("HTTP@myserver.localdomain")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
kerberos.GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Unknown error', 0))
>>>
我无法为普通HTTP生成密钥表/myserver@LOCALDOMAIN因为它还将强制用户使用这样的地址访问服务器。我需要让函数使用正确的FQDN名称。据我所知,authGSSServerInit应该在不破坏FQDN的情况下使用FQDN
我认为python kerberos方法调用以下krb5 libs(1.9-33.el6)提供的函数,问题也可能出现在这些函数中:
maj_stat = gss_import_name(&min_stat, &name_token, GSS_C_NT_HOSTBASED_SERVICE, &state->server_name);
maj_stat = gss_acquire_cred(&min_stat, state->server_name,GSS_C_INDEFINITE,GSS_C_NO_OID_SET, GSS_C_ACCEPT, &state->server_creds, NULL, NULL);
kerberos已在此主机上正确配置,并已确认正常工作。例如,我可以将kinit作为用户,并对票据执行身份验证。只是authGSSServerInit无法正常工作。一些文档具有误导性:
def authGSSServerInit(service):
"""
Initializes a context for GSSAPI server-side authentication with the given service principal.
authGSSServerClean must be called after this function returns an OK result to dispose of
the context once all GSSAPI operations are complete.
@param service: a string containing the service principal in the form 'type@fqdn'
(e.g. 'imap@mail.apple.com').
@return: a tuple of (result, context) where result is the result code (see above) and
context is an opaque value that will need to be passed to subsequent functions.
"""
事实上,API只需要类型。例如“HTTP”。主体的其余部分在解析器(3)的帮助下生成。尽管kerberos的其余部分很乐意使用短名称,但只有正确设置了dnsdomainname,解析器才会生成FQDN 关于完整性的更多信息,请在python命令中包含以下变量:
KRB5_TRACE=/path-to-log/file.log KRB5_CONFIG='/etc/krb5.conf' KTNAME=/etc/security/keytabs/foo.keytab /opt/anaconda3.5/bin/python3.6
在python运行中:
import kerberos
kerberos.authGSSServerInit("user")
考虑事项:
如果没有,请转到日志文件并享受调试:p您知道如何禁用此功能吗?我正在尝试连接到服务器的CNAME,而此“功能”不断改变我的服务原则。我解决了我的问题,并在此处进行了记录:
import kerberos
kerberos.authGSSServerInit("user")