confluence 接入公司统一登录
最近实习工作中,上级让我把Wiki平台接入公司的统一登录,很糟心的是confluence不开源没有源码,去网上找了很多博客,找到一个靠点谱的 https://my.oschina.net/xming4321/blog/1798370,按着这个修改login.url为公司的地址就是搞不定,所以想起了最原始的办法,用servlet写,confluence用的是spring的那一套,但是servlet是最高级的,请求会先走servlet,所以我将登录处理器改成自己写的servlet,下面开始操作
1.开发环境准备
confluence是用Java写的,用的spring那一套,配置Java环境,新建普通Java项目
2.导入confluence的jar包与自己需要的jar包,箭头所指是confluence的jar包,
3.confluence判断用户登录是看session里面有没有ConfluenceUserPrincipal这个类,所你当你获取到用户信息往session塞一个就行
ConfluenceUserPrincipal confluenceUserPrincipal = null; if (StringUtils.isNotEmpty(username)) { try { Connection conn = DBHelper.getConnection(); String sql = "select user_key,user_name,email_address from cwd_user inner join user_mapping on user_name = username where user_name = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setObject(1, username); ResultSet rs = ps.executeQuery(); if (rs.next()) { String user_key = rs.getString("user_key"); String user_name = rs.getString("user_name"); String email_address = rs.getString("email_address"); ConfluenceUser confluenceUser = new ConfluenceUser() { @Override public UserKey getKey() { return new UserKey(user_key); } @Override public String getFullName() { return user_name; } @Override public String getEmail() { return email_address; } @Override public String getName() { return user_name; } }; confluenceUserPrincipal = new ConfluenceUserPrincipal(confluenceUser); } } catch (Exception e) { e.printStackTrace(); } } if (confluenceUserPrincipal != null) { session.setAttribute("seraph_defaultauthenticator_user", confluenceUserPrincipal); String redirectUrl = (String) session.getAttribute(ZzcConstant.REFERER_URL); if (StringUtils.isNotEmpty(redirectUrl)) { resp.sendRedirect(redirectUrl); } else { resp.sendRedirect("/"); } } else { resp.sendRedirect(ZzcConstant.HOME_URL + ZzcConstant.APP_ID); }
4.将项目打成jar包,把你的这些jar包,都放入${basedir}\Confluence\confluence\WEB-INF\lib
5.最后修改${basedir}\Confluence\confluence\WEB-INF\classes\seraph-config.xml
6.修改${basedir}\Confluence\confluence\WEB-INF\web.xml,配置servlet
在下不才,只能想到这种原始的方法,若有更好方案的欢迎交流,希望我的方案能给你提供帮助!