我正在为大学做一个项目。我设置了一个服务器,它必须验证几个凭证(用户名和密码)与kerberos 5服务器(这是一个独立的服务器在我的网络中)。我不需要对这些用户的权限进行任何操作,只是检查用户名和密码的组合是否有效。我的项目是在Ubuntu 18.04服务器上用python编写的。
这个问题涉及到一个 前题 我的
我设法用 gssapi 验证了证书,但有人告诉我。
只是一个无关紧要的说明 -- 我不知道你的项目是如何结构的, 但如果你在服务器上做这个密码验证, 那么它并没有很好地利用Kerberos...
什么是正确的a更好的验证凭证的方法?
我就是这样设法验证的。
import gssapi
server_name = gssapi.Name('krbtgt/DOMAIN.COM@')
username = "USERNAME"
password = "PASSWORD"
user = gssapi.Name(base=username, name_type=gssapi.NameType.user)
bpass = password.encode('utf-8')
result = False
try:
creds = gssapi.raw.acquire_cred_with_password(user, bpass, usage='initiate')
creds = creds.creds
context = gssapi.SecurityContext(name=server_name, creds=creds, usage='initiate')
result = True
except AttributeError:
print("AttributeError")
except gssapi.exceptions.GSSError as er:
print(er)
# acquire_cred_with_password returns a wrapper, we want the creds
# object inside this wrapper
print(result)
做 gssapi.raw.acquire_cred_with_password(user, bpass, usage='initiate')
完全足以获得TGT。没有其他必要。