修改confluence实现登录加密

本文讲述了如何在Confluence应用中解决弱密码问题,通过前端拦截并加密数据(使用RSA),以及后端接收并解密的步骤,详细描述了前端JS和后端Java的实现过程。
摘要由CSDN通过智能技术生成

背景

有一个在用的confluence应用,被多次通报有使用弱密码。经查发现,登录时居然是明文传输账号密码。。。
明文传输。。。

解决问题

网上查了下文档,也翻了下登录页面的代码,没有发现有设置加密的地方。
官方没有,那尝试自己来改。

思路

前端提交数据前,拦截修改提交数据,将数据加密后传递。
后端收到数据后,先解密再执行原逻辑。

首先我反编译了后端代码,梳理了页面登录的流程。
然后去网上查了相关加密算法,决定使用rsa加密。
最后查询了js和java的rsa实现方法。

修改后结果如下:
修改后

大致步骤

前端修改内容

前端rsa的实现参考借鉴了,https://tool.ip138.com/rsa/

  • 引入js
    修改 com.atlassian.confluence_confluence-8.3.1.jar中的plugins/web-resources.xml文件,引入新的实现加密的js.
    当然也可以不修改这个文件把相关方法直接写入原来的login.js文件中
    在这里插入图片描述
    <web-resource key="login" name="Confluence Login" i18n-name-key="admin.web.resources.plugin.login.name">
        <transformation extension="js">
            <transformer key="jsI18n"/>
        </transformation>
        <resource type="download" name="login.js" location="/includes/js/login.js">
            <param name="source" value="webContextStatic"/>
        </resource>
        <resource type="download" name="rsa.js" location="/includes/js/jsencrypt.js">
            <param name="source" value="webContextStatic"/>
        </resource>
        <dependency>confluence.web.resources:ajs</dependency>
        <dependency>com.atlassian.auiplugin:template</dependency>
    </web-resource>
  • 修改登录页面js
    在登录前的校验逻辑后,添加了加密处理逻辑。
    我是修改了传递的id值。当然你也可以直接对原值中的账号密码进行加密。
       $loginForm.submit(function(e) {
            $loginButton.attr('enabled', 'false');
            var formIsValid = validate();
            if (!formIsValid) {
                $loginButton.attr('enabled', 'true');
            }
            formIsValid || e.preventDefault();
//以下是新加的rsa非对称加密逻辑
            if('function' == typeof(JSEncrypt)){
                let crypt = new JSEncrypt();
                crypt.setPublicKey("这里填公钥");
                $('#os_password')[0].name="data";
                $('#os_username').removeAttr("name");
                $('#os_password').val( crypt.encrypt("{\"os_username\":\""+$('#os_username').val()+"\",\"os_password\":\""+$('#os_password').val()+"\"}") || '')
            }
        });

后端修改内容

后端java解密rsa的逻辑,参考借鉴了这篇博文 https://blog.csdn.net/wanzijy/article/details/126092414
confluence登录时传递的信息是在com.atlassian.seraph_atlassian-seraph-4.1.0.jar包里的LoginFilter类中的PasswordBasedLoginFilter.UserPasswordPair方法中实现。
于是反编译代码,添加解密方法,再编译后替换原文件。

添加的代码如下:

 protected PasswordBasedLoginFilter.UserPasswordPair extractUserPasswordPair(HttpServletRequest request) {
        String data = request.getParameter("data");
        String username = request.getParameter("os_username");
        String password = request.getParameter("os_password");
//下面是新增的代码,解密并替换
        if(StringUtils.isNotEmpty(data)){
            data = decrypt(data);
            JSONObject jsonObject = new JSONObject(data) ;
            if(jsonObject.has("os_username")){
                username=jsonObject.get("os_username").toString();
            }
            if(jsonObject.has("os_password")){
                password=jsonObject.get("os_password").toString();
            }
        }
       ...
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Confluence官方API将Word导入到Confluence,您需要完成以下步骤: 1. 获取Confluence API访问令牌和密钥 首先,您需要在Confluence中生成API访问令牌和密钥。要执行此操作,请转到Confluence的设置页面,然后单击“应用程序”>“API令牌”。 2. 创建Confluence页面 接下来,您需要使用Confluence API创建一个新页面。要执行此操作,请使用POST请求调用以下API端点: ``` https://your-confluence-url/rest/api/content/ ``` 在请求正文中,您需要提供页面的标题,空间键和内容。例如: ``` { "type":"page", "title":"My New Page", "space":{"key":"MYSPACE"}, "body":{ "storage":{ "value":"<p>This is the content of my new page.</p>", "representation":"storage" } } } ``` 3. 将Word文档转换为HTML 接下来,您需要将Word文档转换为HTML格式。您可以使用任何适合您的库或工具来执行此操作。 4. 将HTML内容添加到Confluence页面 最后,在创建的Confluence页面中添加HTML内容。要执行此操作,请使用PUT请求调用以下API端点: ``` https://your-confluence-url/rest/api/content/{page_id}/version ``` 在请求正文中,您需要提供HTML内容。例如: ``` { "minorEdit":false, "content":{ "id":"{page_id}", "type":"page", "version":{ "number":2 }, "body":{ "storage":{ "value":"<p>This is the updated content of my page.</p>", "representation":"storage" } } } } ``` 请注意,您需要将{page_id}替换为先前创建的页面的ID。 这些步骤应该可以帮助您使用Confluence官方API将Word文档导入到Confluence中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值