网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
此消息表明一个操作尝试要求以 Kerberos 的 user/host@realm 身份认证的操作,但票据 cache 中没有用于 user/host@realm 的票据。
- 用户环境引用的策略/票证缓存文件丢失、不可读(权限)、损坏或无效
- 票证续签寿命设置为零
- 票证授予票证(TGT)不存在,因为服务A需要将命令作为服务B运行,但尚未正确配置为允许模拟服务B
- 票证更新尚未执行/未成功。这可能是由于CDH 5.3之前的HBASE或CDH5.2之前的Hive / Sentry缺陷引起的
- 该用户的凭据尚未在KDC中生成
- 执行了手动步骤,例如hadoop fs -ls,但是用户从未通过Kerberos身份验证
- Oracle JDK 6 Update 26或更早版本无法读取由MIT Kerberos 1.8.1或更高版本创建的Kerberos凭证高速缓存。
- 某些版本的Oracle JDK 8可能会遇到此问题
- 配置
useTicketCache=false
,如果配置为true在新版本中可能不支持,就会出现每次票据更新的时间点产生GSS的问题
javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)]
- 由JDK缺陷引起
- 票证消息对于UDP协议而言太大
- 主机未正确映射到Kerberos领域
GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - UNKNOWN_SERVER)
hostname或要访问的URL与keytab中列出的主机之间发生主机名不匹配。造成这种情况的原因多种多样,包括但不限于:
- 多网卡(NIC)服务器,以使来自主机的数据包的IP地址与通过主机解析返回的IP不匹配
- 负载平衡器和后续的主机名解析问题
- DNS和主机名解析问题/不一致
- 反向DNS(必需)主机名解析问题/不一致
- 在krb5.conf中主机正在映射到参数[domain_realm]的错误域,这或者是通过其他的krb5.conf配置,或者是通过KDC配置。默认参数情况下,除非使用[domain_realm]等进行显式配置,否则主机名(例如:“ crash.EXAMPLE.com ”)将映射到域“ EXAMPLE.com ” 。请参见MIT Kerberos文档:[domain_realm]
- 如果尝试在Cloudera Manager中执行“ Generate Credentials ”步骤(在更高版本中重命名为“ Generate Missing Credentials ”)时发生此错误,则可能是由于导入到Cloudera Manager数据库中的管理员帐户详细信息不再与主机匹配,例如Cloudera Manager服务器的主机名在上一次导入后随后更改了。
javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Receive timed out)]
网络连接问题,可能是由于使用UDP与KDC通信引起的
GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)
- 令牌中的主机名必须是可解析的,并且与主机身份验证匹配
- 请参阅知识文章,Error: “HTTP Status 401” when Accessing the Oozie WebUI
- JDK8版本u51之前的缺陷
GSS initiate failed [Caused by GSSException: Failure unspecified at GSS-API level / (Mechanism level: Request is a replay (34)]
- KDC会在短时间内看到来自同一Principal名称的多个身份验证请求,并拒绝该请求以防止“中间人”攻击
- 如果在多个主机/服务上使用了相同的Principal/key,或者由于主机之间的时钟变化,可能会发生这种情况