资源预览内容
第1页 / 共96页
第2页 / 共96页
第3页 / 共96页
第4页 / 共96页
第5页 / 共96页
第6页 / 共96页
第7页 / 共96页
第8页 / 共96页
第9页 / 共96页
第10页 / 共96页
亲,该文档总共96页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
论文题目 基于单点登录的互联网统一身份认证系统的 设计与实现 专业学位类别 工 程 硕 士 学 号 201291250212 作 者 姓 名 谢 坚 指 导 教 师 史莹晶 副教授 分类号 密级 UDC注1 学 位 论 文 基于单点登录的互联网统一身份认证系统的设计与实现 (题名和副题名) 谢 坚 (作者姓名) 指导教师 史莹晶 副教授 电子科技大学 成 都 李文焕 高 工 建龙钢铁控股有限公司 北 京 (姓名、职称、单位名称) 申请学位级别 硕士 专业学位类别 工程硕士 工程领域名称 软 件 工 程 提交论文日期 2014.03.01论文答辩日期 2014.05.16 学位授予单位和日期 电子科技大学 2014 年 6 月 25 日 答辩委员会主席 评阅人 注 1:注明国际十进分类法 UDC的类号。 DESIGN AND IMPLEMENTATION OF THE UNIFIED IDENTITY AUTHENTICATION SYSTEM BASED ON SINGLE SIGN ON A Master Thesis Submitted to University of Electronic Science and Technology of China Major: Master of Engineering Author: Xiejian Advisor: Shi-Yingjing School : School of Aeronautics if (oldString = null | newString = null) return line; if (oldString.equals(“) 电子科技大学硕士学位论文 44 return line; int i = 0; if (i = line.indexOf(oldString, i) = 0) char line2 = line.toCharArray(); char newString2 = newString.toCharArray(); int oLength = oldString.length(); StringBuffer buf = new StringBuffer(line2.length); buf.append(line2, 0, i).append(newString2); i += oLength; int j = i; while (i = line.indexOf(oldString, i) 0) buf.append(line2, j, i - j).append(newString2); i += oLength; j = i; buf.append(line2, j, line2.length - j); return buf.toString(); return line; 中文字符判断函数:中文字符判断函数: /* * 判断字符串是否为中文 */ public static boolean isChinese(String str) boolean ret =false; for (int i = 0; i 0) if (ssopasswd.length() = 16) password = password.substring(8, 24); if (!ssopasswd.equals(password) throw new UnauthorizedException(); if (userType = 0) userID = rs.getLong(“userid“); loginName = rs.getString(“loginname“); userName = rs.getString(“username“); if (userType = 1) userlevel = rs.getInt(“userlevel“); /注册用户要校验有效状态和锁定状态 int lock = rs.getInt(“islock“); if (lock = UserParam.USER_LOCK) throw new UnauthorizedException(“该帐户被锁定!“); if (userType = 0) int isValid = rs.getInt(“isvalid“); if (isValid = UserParam.INVALID_USER) throw new UnauthorizedException(“该帐户无效!“); /判断用户是否过期 Date accessTime = rs.getDate(“accesstime“); Date now = new Date(System.currentTimeMillis(); if (accessTime != null 第五章 详细设计与部分关键实现 49 catch (SQLException sqle) SysLog.getLogger(thisClass).error( “在作用户身份校验时出现异常!n“ + sqle.getMessage(); throw new UnauthorizedException(); finally DbConnection.close(rs,pstmt, con); rs = null; pstmt = null; con = null; return new DbAuthorization( userID, loginName, userName, ip, userlevel); 5.4.3 系统日志记录关键实现代码 系统日志记录统一在 DbLog 中完成,DbLog 提供通用的方法,供系统中各个模块调用,统一完成系统日志的记录。 public static void writeLog(Loginfo log) SqlHandler sql=new SqlHandler(); Connection conn = null; PreparedStatement pst = null; KeyGenerator keyGenerator = null; String str_sql=“SELECT nislog_seq.NEXTVAL from dual“; long logID = -1; try /keyGenerator = KeyGenerator.getInstance(“nislog“); conn = ConnectionManager.getInstance().getConnection(); pst = conn.prepareStatement(WRITE_LOG); pst.setString(1, log.getLoginname(); pst.setString(2, log.getIp(); pst.setString(3, log.getDesc(); pst.setLong(4, log.getType(); pst.setString(5, log.getTime(); pst.setString(6, log.getUsername(); String str=pst.toString(); pst.executeUpdate(); catch(Exception ex) ex.printStackTrace(); finally DbConnection.close(pst, conn); pst = null; conn = null; 电子科技大学硕士学位论文 50 其他模块调用范例: Loginfo log = new Loginfo(); log.setDesc(log.NEW_USER+loginname); log.setIp(authToken.getIp(); log.setLoginname(authToken.getLoginName(); log.setTime(DateTimeUtils.getNowString(); log.setType(log.OP_NEW); log.setUsername(authToken.getUserName(); DbLog dblog=new DbLog(); dblog.writeLog(log); 5.4.4 网民用户登录关键实现代码 网民用户登录是统一身份认证系统为网民用户提供的统一登录接口,网民用户通过这个登录接口完成登录后,能自由的在网站各个应用中进行切换使用。 图 5-11 网民用户登录页 登录成功后进入统一身份认证提供的个人中心页。 第五章 详细设计与部分关键实现 51 图 5-12个人中心页 整个网民用户登录过程共分为四个步骤完成: 1) 认证网民用户和密码; /* * 网民用户登录处理逻辑 * param username 如果注册的时候有昵称,那么使用昵称和登录名都可以登录 * param password 经过加密后的数据 * param ip 来访者ip,为扩展制定ip不能登录的接口预留的参数 * param userType 1 为管理员 0 注册用户 * */ public User createUser( String username, String password, String ip, int userType) String salt = “; if (username = null | password = null) return null; if(password.indexOf(“ucsalt=“)0) salt = password.substring(password.indexOf(“ucsalt=“)+8,password.length(); password =password.substring(0,password.indexOf(“ucsalt=“); / debugUcPwd(password, salt); else password = getEnyptPwd(password); String loginName = username; int lock = 0; User user = null; try if (userType = 1) 电子科技大学硕士学位论文 52 return null; else user = new MysqlUserManager().getRegUserInfo(loginName); if(user = null) return null; if(!password.equals(user
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号