apache spark-为什么getKerberosTransport需要3部分kerborse原则?


0

早上/下午/晚上好!

spark2.4.x, Hive1.2.1

源代码如下:https://github.com/apache/spark/blob/master/sql/hive-thriftserver/v1.2/src/main/java/org/apache/hive/service/auth/KerberosSaslHelper.java

 public static TTransport getKerberosTransport(String principal, String host,
    TTransport underlyingTransport, Map<String, String> saslProps, boolean assumeSubject)
    throws SaslException {
    try {
      String[] names = principal.split("[/@]");
      if (names.length != 3) {
        throw new IllegalArgumentException("Kerberos principal should have 3 parts: " + principal);
      }

现在的问题是:

有人知道为什么spark thrift服务器需要一个由三部分组成的kerberos原则吗?

Spark thrift server通过提交一个长时间运行的作业来 job,该作业不需要由三部分组成的kerberos原则。

启动一个监听端口的服务,不需要3部分kerberos原则(就像spark作业历史一样),对吧?

所以想知道这段代码为什么要检查原理是否有3个部分。。。

谢谢!

1 答案


0

Kerberos主体的三个部分是{service}/{name}[@{realm}]。主持人/server.domain.com网站@realm.com网站或主人/server.domain.com网站. 客户机依赖此信息来确定Kerberos KDC的位置,以便它可以请求票证。如果名称以领域名称结尾(例如。服务器.realm.com). 在这种情况下,客户机只是明确表示了这一点。

我不知道为什么作者选择要求这三个。它确实使客户机实现更容易,因为您不必猜测其意图,但这是以牺牲API的简单性为代价的。


我来回答

写文章

提问题

面试题