科技 · 3 月. 15, 2024/星期五

Typecho後台無需密碼單點登錄KodExplorer

本站的文件管理器使用的是可道云开发的KodExplorer,每次我需要修改博客源码的时候都需要重新登录一下,显得异常的麻烦,于是就想着能不能在登录博客之后无需重新登录就可以访问KodExplorer,然后我找了一下官方的文档,发现是支持单点登录的。

配置单点登录apiLoginTonken

打开KodExplorer 的config目录,新建一个setting_user.php文件

然后打开此文件在其中添加以下代码,其中后面的token需要自己重新生成一个强度较高的随机密码,可以使用本站的随机密码生成器:随机密码生成器 – ICE LAB (170601.xyz)

<?php
//自行设置;长度不小于5,为安全考虑建议尽量复杂;该数值切勿泄露,建议定时更换;
$GLOBALS['config']['settings']['apiLoginTonken'] = 'Zn7yJmXDxvwCUAOWivKD';

记录一下这个随机密码:Zn7yJmXDxvwCUAOWivKD

官方API文档

说明: 该接口用于整合现有web系统,可以通过后端程序使某个用户直接登陆可道云,实现单点登陆;该链接由其他系统进行拼接,不限编程语言。
请求方式跳转方式;
请求地址http://server/?user/loginSubmit&login_token=XXX&link=XXX
接口说明:验证成功后跳转到kod首页或者指定的页面,不需要accessToken参数。注意:该接口可以直接通过后端登陆某个账号,注意安全保密,切勿泄露apiLoginTonken,建议定期更换;
请求参数

login_token:    //base64Encode([用户名])+'|'+md5([用户名]+[apiLoginTonken])
link:           //可选。登陆后指定到的页面;需要url编码

如何配置apiLoginTonken
调用示例:

例如:假设apiLoginTonken为aabbcckod;自动登陆admin用户;
login_token:base64Encode('admin')+'|'+md5('admin'+'aabbcckod') 
结果为:"YWRtaW4=|83ca7512188b3070a1cd9b4977bc17dc"
结果经过url编码之后则最终请求为: 
http://server/?user/loginSubmit&login_token=YWRtaW4%3D%7C83ca7512188b3070a1cd9b4977bc17dc

生成login_token

首先使用base64加密你需要登录的用户名称,比如admin,访问下方链接即可加密

Coder Toolbox (lolicon.dev)

复制编码后的值:YWRtaW4=

然后使用MD5哈希编码用户名+最开始生成的随机密码也就是:adminZn7yJmXDxvwCUAOWivKD

Coder Toolbox (lolicon.dev)

记录一下这个哈希码8125c5fa9178f2f180f17a5f6285290a

接着,我们将上方的Base64编码与这个哈希码进行拼接,中间使用|符号进行分割,拼接之后如下:

YWRtaW4=|8125c5fa9178f2f180f17a5f6285290a

这个时候,我们就生成好了login_token

测试使用

我们可以访问http://server/?user/loginSubmit&login_token=XXX来测试是否可以直接不输入密码和用户名直接登录,比如我部署的路径为:kod.vwmwv.cn

那么我可以访问如下路径进行登录:

https://kod.vwmwv.cn/index.php?user/loginSubmit&login_token=YWRtaW4=|8125c5fa9178f2f180f17a5f6285290a

打开登录页面,这个时候还没登录,我们在浏览器输入上方的路径

然后点击回车进行访问,如果直接进入那就说明配置成功

Typecho后台添加单点登录按钮

我在typecho后台的顶部操作栏添加了一个按钮,点击这个按钮就可以直接单点登录KodExplorer

当然,我们需要typecho的管理员权限才能看到此按钮,并且可以单点登录,如果不是管理员,假如你的站点有普通用户登录的话,点击此按钮就直接进入了你的网站文件目录,那不就问题大了。

打开typecho站点目录下的admin目录,找到menu.php并打开

在下方代码的后方

<?php Typecho_Plugin::factory('admin/menu.php')->navBar(); ?>

添加如下的内容,当然要替换成你自己的单点登录链接

<?php if($user->pass('administrator', true)): ?>
    <a href="https://kod.vwmwv.cn/index.php?user/loginSubmit&login_token=YWRtaW4=|8125c5fa9178f2f180f17a5f6285290a"><?php _e('柒云'); ?></a>
    <?php endif; ?>
        

这样,当我们进入博客后台的时候,就可以直接点击这个按钮,来管理文件了,节省了一次我们输入账号和 密码的时间。

© 允许规范转载打赏
博主: 珂泽 | 发布时间:2022 年 03 月 18 日 | 1755 次浏览 | 3 条评论 | 783字数 | 分类: 编程笔记
https://www.kezez.com/archives/57.html