1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.security;
19
20 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;
21 import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.TokenIdentifier.Kind;
22 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
23 import org.apache.hadoop.hbase.protobuf.generated.MasterAdminProtos;
24 import org.apache.hadoop.hbase.protobuf.generated.MasterMonitorProtos;
25 import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos;
26
27 import java.util.Map;
28 import java.util.concurrent.ConcurrentHashMap;
29 import java.util.concurrent.ConcurrentMap;
30
31
32
33
34 public class SecurityInfo {
35
36 private static ConcurrentMap<String,SecurityInfo> infos = new ConcurrentHashMap<String,SecurityInfo>();
37
38 static {
39 infos.put(AdminProtos.AdminService.getDescriptor().getName(),
40 new SecurityInfo("hbase.regionserver.kerberos.principal", Kind.HBASE_AUTH_TOKEN));
41 infos.put(ClientProtos.ClientService.getDescriptor().getName(),
42 new SecurityInfo("hbase.regionserver.kerberos.principal", Kind.HBASE_AUTH_TOKEN));
43 infos.put(MasterAdminProtos.MasterAdminService.getDescriptor().getName(),
44 new SecurityInfo("hbase.master.kerberos.principal", Kind.HBASE_AUTH_TOKEN));
45 infos.put(MasterMonitorProtos.MasterMonitorService.getDescriptor().getName(),
46 new SecurityInfo("hbase.master.kerberos.principal", Kind.HBASE_AUTH_TOKEN));
47 infos.put(RegionServerStatusProtos.RegionServerStatusService.getDescriptor().getName(),
48 new SecurityInfo("hbase.master.kerberos.principal", Kind.HBASE_AUTH_TOKEN));
49 }
50
51
52
53
54
55 public static void addInfo(String serviceName, SecurityInfo securityInfo) {
56 infos.putIfAbsent(serviceName, securityInfo);
57 }
58
59
60
61
62 public static SecurityInfo getInfo(String serviceName) {
63 return infos.get(serviceName);
64 }
65
66 private final String serverPrincipal;
67 private final Kind tokenKind;
68
69 public SecurityInfo(String serverPrincipal, Kind tokenKind) {
70 this.serverPrincipal = serverPrincipal;
71 this.tokenKind = tokenKind;
72 }
73
74 public String getServerPrincipal() {
75 return serverPrincipal;
76 }
77
78 public Kind getTokenKind() {
79 return tokenKind;
80 }
81 }