python中的kerberos身份验证

时间:2017-11-13 13:28:05

标签: python authentication kerberos

我们有一个运行MSSQL 2008的数据库,我使用下面的Python(2.7)代码来使用Kerberos进行身份验证。

import urllib2
from urlparse import urlparse
from socket import gethostbyaddr  
from sspi import ClientAuth
from base64 import b64encode, b64decode


def getService(url):
    return 'host/{}'.format(
        gethostbyaddr(
            urlparse(url).netloc.split(':')[0]
        )[0][:-16]
    )

status, buff = 1, None
c = ClientAuth('Kerberos', targetspn=getService(url))
while status != 0:
    status, buff = c.authorize(buff)

    tgt = b64encode(buff[0].Buffer)
    authorization_header = \
                ("Negotiate " + tgt)

当我在python控制台中尝试此代码时,getService可以正确解析地址给我

  

主机/ SQLSERVER1

但是当我做状态时,buff = c.authorize(buff)它给了我

  

回溯(最近一次呼叫最后一次):文件"",第1行,in      文件" C:\ python27 \ lib \ site-packages \ win32 \ lib \ sspi.py",   第139行,授权       sec_buffer_out)pywintypes.error:( - 214608953,' InitializeSecurityContext','指定的目标未知或   不可达&#39)

为什么说指定目标未知或无法访问?什么时候我可以ping它和gethostbyaddr?无论如何要解决这个问题?

0 个答案:

没有答案