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

 

在下不才,只能想到这种原始的方法,若有更好方案的欢迎交流,希望我的方案能给你提供帮助!

posted @ 2019-01-30 17:16  要一直在路上  阅读(1131)  评论(0编辑  收藏  举报