Java KrbeException“;消息流修改(41)";使用Kerberos连接到SMB共享时

Java KrbeException“;消息流修改(41)";使用Kerberos连接到SMB共享时,java,kerberos,samba,cifs,jcifs,Java,Kerberos,Samba,Cifs,Jcifs,我在使用JCifs(Kerberos扩展版本1.3.17)执行文件管理时遇到一些Kerberos身份验证问题 这是我当前的krb5.conf配置: [libdefaults] default_realm = <REALM_NAME_UPPERCASE> udp_preference_limit = 1 [realms] <REALM_NAME_UPPERCASE> = { kdc = <DOMAIN_NAME_UPPERCAS

我在使用JCifs(Kerberos扩展版本1.3.17)执行文件管理时遇到一些Kerberos身份验证问题

这是我当前的krb5.conf配置:

[libdefaults]
    default_realm = <REALM_NAME_UPPERCASE>
    udp_preference_limit = 1
[realms]
    <REALM_NAME_UPPERCASE> = {
        kdc = <DOMAIN_NAME_UPPERCASE>:88
        admin_server = <DOMAIN_NAME_UPPERCASE>
        default_domain = <DOMAIN_NAME_UPPERCASE>
    }
[domain_realm]
    .<domain_name> = <REALM_NAME_UPPERCASE>
    <domain_name> = <REALM_NAME_UPPERCASE>
[appdefaults]
    kinit = {
        renewable = true
        forwardable = true
    }
您可以找到完整的错误日志(某些详细信息被混淆)


有人能告诉我我做错了什么吗?

这个领域的大写字母对于避免“
异常:krb_错误41消息流修改(41)
”非常重要


请参见

讨厌Necrobup,但在Docker容器中启动Spark和Zeppelin时遇到了相同的问题,主控器是启用Kerberos的远程纱线集群。但是,在本例中,域名大小写不是问题所在

几个小时后,我发现这建议从
krb5.conf
文件中删除以下行:

renew_lifetime = 7d

这就解决了问题。希望这对某人有所帮助。

另一条(有用?)评论:此用户帐户无权访问文件服务器的根目录,只能访问该特定子文件夹。我不知道这是否相关。请尝试将您的krb5.conf和login.conf文件放在tomcat的lib文件夹中,然后再试一次。您能否在回答中更具体一些,并说明(最好是代码)您的建议如何帮助提问者?请再解释一下。我(作为一名读者)发现很难理解你的答案是如何解决问题的。在我看来,发布链接更适合作为评论。问题是Kerberos通过基于pasword和参数计算校验和来检查答案的完整性。如果收到的答案是肯定的,但输入参数不匹配,则会出现此“流修改”错误。最有可能的原因是服务器使用实数作为大写流,而客户端使用小写流。在某些环境中,这种常见错误肯定是由此引起的。但我不知道为什么。在删除那条线后,我也为我工作过。
GSSException: No valid credentials provided (Mechanism level: Message stream modified (41))
at sun.security.jgss.krb5.Krb5Context.initSecContext(Unknown Source)
at sun.security.jgss.GSSContextImpl.initSecContext(Unknown Source)
at sun.security.jgss.GSSContextImpl.initSecContext(Unknown Source)
at jcifs.smb.SpnegoContext.initSecContext(SpnegoContext.java:80)
at jcifs.smb.Kerb5Authenticator.setup(Kerb5Authenticator.java:196)
at jcifs.smb.Kerb5Authenticator.access$000(Kerb5Authenticator.java:30)
at jcifs.smb.Kerb5Authenticator$1.run(Kerb5Authenticator.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at jcifs.smb.Kerb5Authenticator.sessionSetup(Kerb5Authenticator.java:166)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:320)
at jcifs.smb.SmbSession.send(SmbSession.java:239)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:176)
at jcifs.smb.SmbFile.doConnect(SmbFile.java:925)
at jcifs.smb.SmbFile.connect(SmbFile.java:974)
at jcifs.smb.SmbFile.connect0(SmbFile.java:890)
at jcifs.smb.SmbFile.resolveDfs(SmbFile.java:669)
at jcifs.smb.SmbFile.send(SmbFile.java:783)
at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:2009)
at jcifs.smb.SmbFile.doEnum(SmbFile.java:1758)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1735)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1668)
renew_lifetime = 7d