python gssapi凭据错误

python gssapi凭据错误,python,kerberos,spnego,Python,Kerberos,Spnego,我正在编写一个使用python gssapi模块的小型python应用程序。但是,我在创建凭据对象时遇到问题。我得到的错误是: gssapi.error.NoCredential: (458752) No credentials were supplied, or the credentials were unavailable or inaccessible.. 我已经为user1@somedomain.com并从AD获得TGT。在我的python代码中,我调用: clientGssCre

我正在编写一个使用python gssapi模块的小型python应用程序。但是,我在创建凭据对象时遇到问题。我得到的错误是:

gssapi.error.NoCredential: (458752)  No credentials were supplied, or the credentials were unavailable or inaccessible..
我已经为
user1@somedomain.com
并从AD获得TGT。在我的python代码中,我调用:

clientGssCreds = creds.Credential(gssUserName, lifetime=gssapi.C_INDEFINITE, desired_mechs=oid_set, usage=gssapi.C_INITIATE)
其中,
gssUsername
是由以下内容定义的名称:

gssUserName = Name("user1@somedomain.com", gssapi.C_NT_HOSTBASED_SERVICE)
任何帮助都将不胜感激


编辑(下面的脚本):


你能发布完整的脚本吗?试着编辑你上面的脚本来回答问题。任何python适当的缩进都是一种奖励。完成,感谢提示:)删除了我的非应答,因此我认为我已经缩小了用户范围,可能需要设置一个属性以允许底层机制获取凭据。在java中,它是通过设置System.setProperty(“javax.security.auth.UseSubjectCredOnly”、“false”)来设置的;有人知道如何在python中实现类似的功能吗?
 def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("username", help="user@domain.COM")
    parser.add_argument("target_server_spn", help="HTTP@serviceurl.com@domain.COM")
    args = parser.parse_args()

    krb5MechOid =  oids.OID.mech_from_string("1.2.840.113554.1.2.2")
    spnegoMechOid = oids.OID.mech_from_string("1.3.6.1.5.5.2")

    oid_set = oids.MutableOIDSet()
    oid_set.add(spnegoMechOid)
    oid_set.add(krb5MechOid)

    gssUserName = Name(args.username, gssapi.C_NT_HOSTBASED_SERVICE)

    clientGssCreds = creds.Credential(gssUserName, lifetime=gssapi.C_INDEFINITE, desired_mechs=oid_set, usage=gssapi.C_INITIATE)

    gssServerName = gssapi.Name(args.target_server_spn, gssapi.C_NT_HOSTBASED_SERVICE)
    clientContext = ctx.InitContext(gssServerName, clientGssCreds)