早上/下午/晚上好!
星星之火2.4.x,Hive 1.2.1
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);
}现在的问题是:
有人知道为什么火花节约服务器需要一个3部分的kerberos原则吗?
星火节约服务器通过提交一个长期运行的作业来工作,这不需要一个3部分的kerberos原则。
启动一个听端口的服务,不需要3部分kerberos原则(就像火花作业历史一样),对吗?
所以想知道为什么这段代码会检查原则是否有3部分.
谢谢!
发布于 2020-03-13 21:56:20
Kerberos主体的三个部分是{service}/{name}[@{realm}]。例如host/server.domain.com@realm.com或host/server.domain.com。客户端依赖于这些信息来确定Kerberos的位置,以便它可以请求票证。如果名称以领域名称结尾(例如,server.realm.com),则领域部分通常是可选的。在这种情况下,客户端只是明确地说明了这一点。
我不知道为什么作者会要求这三者。它确实使客户端实现更容易,因为您不必猜测意图,但这是以牺牲API的简单性为代价的。
https://stackoverflow.com/questions/60677520
复制相似问题