我们有一个运行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?无论如何要解决这个问题?