亚洲成a人片在线观看69,中文字幕免费无线观看,日韩精品无码一区二区三区四区,92精品国产自产在线观看直播,亚洲精品无码不卡在线观看屁,亚洲成av人片在www色猫咪

Hadoop 認證模塊詳解

客戶(hù)端認證

客戶(hù)端的入口函數為 KerberosAuthenticator.authenticate函數

連接HTTP服務(wù)端

HttpURLConnection conn = token.openConnection(url, connConfigurator);
conn.setRequestMethod(AUTH_HTTP_METHOD);
conn.connect();

SPNEGO認證

對于普通的HTTP的kerberos認證(SPNEGO),需要現在客戶(hù)端登錄KDC服務(wù)。核心代碼在函數doSpnegoSequence里面。

首先需要登錄KDC服務(wù)端:

subject = new Subject();
LoginContext login = new LoginContext("", subject,
    null, new KerberosConfiguration());
// 登錄KDC服務(wù)
login.login();

下面主要是開(kāi)始認證的時(shí)候的邏輯。核心處理邏輯流程圖如下:

pic

主要代碼邏輯如下。

GSSManager gssManager = GSSManager.getInstance();
// 設置服務(wù)端的域名,由于是HTTP協(xié)議,所以當前要求principal的格式為:HTTP/HOST_NAME的方式。
String servicePrincipal = KerberosUtil.getServicePrincipal("HTTP",
    KerberosAuthenticator.this.url.getHost());
Oid oid = KerberosUtil.NT_GSS_KRB5_PRINCIPAL_OID;
GSSName serviceName = gssManager.createName(servicePrincipal,
                                            oid);
oid = KerberosUtil.GSS_KRB5_MECH_OID;
// 創(chuàng  )建獲取token的上下文信息。
gssContext = gssManager.createContext(serviceName, oid, null,
                                      GSSContext.DEFAULT_LIFETIME);
gssContext.requestCredDeleg(true);
gssContext.requestMutualAuth(true);

byte[] inToken = new byte[0];
byte[] outToken;
boolean established = false;

// Loop while the context is still not established
while (!established) {
  HttpURLConnection conn =
      token.openConnection(url, connConfigurator);
  // 獲取客戶(hù)端的token。對于第一次的場(chǎng)景,inToken為空。
  // 對于中間過(guò)程,需要將服務(wù)端給的token傳進(jìn)去校驗。
  outToken = gssContext.initSecContext(inToken, 0, inToken.length);
  if (outToken != null) {
	// 將token發(fā)送給服務(wù)端
    sendToken(conn, outToken);
  }

  if (!gssContext.isEstablished()) {
    // 讀取服務(wù)端發(fā)送的token。
	inToken = readToken(conn);
  } else {
	// 認證完成,認證結束
    established = true;
  }
}

認證完成/無(wú)須認證

如果HTTP服務(wù)端返回的是HTTP_OK,則認為服務(wù)端是不需要認證的,或者是已經(jīng)認證完成了。在已經(jīng)完成認證的場(chǎng)景下,
需要解析Token。

AuthenticatedURL.extractToken(conn, token);
if (isTokenKerberos(token)) {
  return;
}
needFallback = true;

其他自定義

其他自定義認證的場(chǎng)景,可以通過(guò)指定Authenticator的方式實(shí)現,具體實(shí)現可以自定義,主要保證服務(wù)端和客戶(hù)端一致即可。

// 當前主要適用于對認證方式需要擴展的場(chǎng)景。
Authenticator auth = getFallBackAuthenticator();
auth.setConnectionConfigurator(connConfigurator);
auth.authenticate(url, token);

服務(wù)端認證

初始化

服務(wù)端初始化的入口函數類(lèi)為AuthenticationFilter, 可以在web啟動(dòng)的時(shí)候將當前filter配置為AuthenticationFilter。用來(lái)實(shí)現服務(wù)端認證功能。

其中函數init為filter的初始化函數,主要作用是加載authHandler以及其他參數。在加載完authHandler之后會(huì )調用authHandler的init函數。
用來(lái)初始化authHandler。KerberosAuthenticationHandler就是一種authHandler。在初始化的時(shí)候會(huì )加載keytab和principal等信息。
并且初試化gssManager。

認證

認證的入口函數filter函數。對于大部分的authHandler,最終認證都是調用authHandler的authenticate函數。針對KerberosAuthenticationHandler來(lái)講。

在需要認證的時(shí)候返回401,如下代碼:

response.setHeader(WWW_AUTHENTICATE, KerberosAuthenticator.NEGOTIATE);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);

通過(guò)下面代碼獲取客戶(hù)端Token??蛻?hù)端的Token對應的keytab必須包含HTTP/*

authorization = authorization.substring(KerberosAuthenticator.NEGOTIATE.length()).trim();
final Base64 base64 = new Base64(0);
final byte[] clientToken = base64.decode(authorization);

在與客戶(hù)端的認證的過(guò)程中,可能會(huì )需要多次交換token(參考客戶(hù)端流程),如果是在交互過(guò)程中,http請求的返回碼是401。如果認證成功,狀態(tài)碼則是200.

# hadoop 


標 題:《Hadoop 認證模塊詳解
作 者:zeekling
提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

評論

取消
亚洲成a人片在线观看69,中文字幕免费无线观看,日韩精品无码一区二区三区四区,92精品国产自产在线观看直播,亚洲精品无码不卡在线观看屁,亚洲成av人片在www色猫咪 亚洲欧美日产综合在线网| 免费a级毛片出奶水| 国产免费爽爽视频在线观看| 亚洲成熟女人毛毛耸耸多| 人人影视手机在线播放| 亚洲国产另类精品专区| 中文字幕一区二区三区91| 欧美精产国品一二三区69堂| 中文亚洲成a人片在线播放| 亚洲欧美日韩中文字幕无线| 国产精品igao视频网| 国产精品免费视频一区二区三区| 亚洲av黄色大全在线观看| 亚洲日韩国产欧美综合另类| 日韩人妻精品中文字幕| AV综合色区无码一区| 日本中文字幕一区二区高清在线| 无码少妇精品一区二区| 成人国产精品免费视频| 制服丝袜中文字幕无码自拍| 亚洲欧美aⅴ一区二区三区| 欧美中文字幕综合在线视频| av国内精品久久久久影院三级| 色欲网天天无码av| 亚洲色图p一区二| 午夜福利电影在线观看| 亚洲东京热无码久久| 亚洲中文字幕久久无码| 一区二区不卡不卡高清在线| 在线观看国产一级强片| 亚洲aⅤ日韩aⅤ永久无码久久| 在线看精品国产三级a| 亚洲人成电影在线观看影院| 国产在线理论片免费播放| 一天时间就想通了……全文免费| 中文字幕无码日韩专区免费| 一级毛片黄久久久免费看A片| 永久免费的无码中文字幕| 亚洲蜜臀网最新资源| 中文字幕无码乱人伦| 亚洲精品午夜精品| http://zeykfw.com http://bancaily.com http://1fenyi.com http://ggyy11.com http://yptx2017.com http://abcadq.com