// Client处理TGT 登录过程【没有TGT,即没有uid】 public Client(string userName, string userPwd, out User u) { this.kerbAsReq = new KerbASRequest(userName, userPwd); User user = asServer.UserValidate(kerbAsReq, ref errorInfo, out tgTicket, out kerbAsResponse); u = user; if (user != null) { this.Uid = user.UserCode; } else { this.Uid = ""; } }
public User UserValidate(KerbASRequest kerbAsReq, ref string errorInfo, out TGTicket tgticket, out string kerbAsResponse) { User user = LoginService.GetUser(kerbAsReq.UserName, kerbAsReq.UserPwd); if (user == null) { errorInfo = "输入的用户名和密码错误"; tgticket = null; kerbAsResponse = ""; return null; } else { //TGTicket tgTicket = new TGTicket(user.UserCode); //string key1 = KeyType.Session_Key_1; //Client与TGS的会话密钥 //string iv = KeyType.Iv; // Or "********" ////StringBuilder strBuilder = new StringBuilder(); ////strBuilder.Append(tgTicket.Uid); ////strBuilder.Append("|"); ////strBuilder.Append(tgTicket.TS2); ////strBuilder.Append("|"); ////strBuilder.Append(tgTicket.LifeTime2); //string strBuilder1 = string.Concat(tgTicket.Uid, "|", Convert.ToString(tgTicket.TS2)); //string strBuilder = string.Concat(strBuilder1, "|", Convert.ToString(tgTicket.LifeTime2)); ////string[] strArray = encryptTicket.Split('|'); 解密之后应有的操作 //string encrypttgTicket = desCryp.Encrypt(strBuilder, KeyType.AS_TGS_Key, KeyType.Iv); //TGTicket票据的加密 //string kerbAsResp = desCryp.Encrypt(string.Concat(string.Concat(encrypttgTicket, "|", desCryp.GenerateDesCryProvider(ref key1, ref iv)),"|",user.UserCode), KeyType.AS_Client_Key, KeyType.Iv); // AS向Client发回的响应 ////tgticket = des.Encrypt(tgTicket,key1,iv); //tgticket = tgTicket; //kerbAsResponse = kerbAsResp; //最终AS向Client发送的数据 TGTicket tgTicket; kerbAsResponse = CreateKerbAsResp(user.UserCode, out tgTicket); tgticket = tgTicket; return user; } }