Jelu安全机制揭秘:5种认证方式与API Token作用域完整解析
Jelu安全机制揭秘5种认证方式与API Token作用域完整解析【免费下载链接】jeluSelf hosted read and to-read list book tracker项目地址: https://gitcode.com/gh_mirrors/je/jeluJelu 是一款自托管的读书与待读清单追踪工具self-hosted book tracker。很多用户在部署后最关心的就是Jelu 的认证登录到底有几种方式API Token 的作用域scope如何控制权限本文带你完整解析 Jelu 的 5 种认证方式、Token 生成与存储机制以及 10 个 API Token 作用域的实际用途。Jelu 的 5 种认证方式一览认证方式适用场景是否默认开启核心配置用户名密码表单/Basic个人与小团队✅ 是无API TokenBearer脚本、自动化、第三方集成✅ 是按需创建无OAuth2 / OIDC 登录用 GitHub 等第三方账号登录按需spring.security.oauth2LDAP 认证企业内网统一身份按需jelu.auth.ldap.*代理头认证Proxy反向代理已认证场景按需jelu.auth.proxy.*所有认证逻辑集中在安全过滤器链中配置核心文件是 SecurityConfig.kt。方式一用户名密码登录Session 会话最基础的登录方式输入用户名和密码服务端验证通过后签发一个JDBC 会话Session 直接存储在数据库中而非内存并下发名为SESSION的 Cookie。会话时长由jelu.session.duration控制见 SessionConfig.kt登出接口/api/v1/logout会主动销毁会话同时兼容 HTTP Basic 认证头方便 curl 等命令行工具方式二API TokenBearer Token——最实用的方式这是自动化集成 Jelu 的首选方式也是本文的重点。Token 是如何生成的查看 ApiTokenService.kt 可以发现几个值得称赞的安全设计格式固定jelu_前缀 32 位十六进制字符16 字节SecureRandom强随机数数据库只存哈希原始 Token 用SHA-256哈希后入库明文只在创建时显示一次之后无法再查看⏳支持过期时间可设置expiresAt过期自动失效每用户最多 20 个 Token并记录lastUsedAt与usageCount便于审计随时可吊销非管理员只能管理自己的 Token管理员可以吊销任意 Token使用方式就是在请求头中携带Authorization: Bearer jelu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx验证逻辑由 BearerTokenAuthenticationFilter.kt 完成格式校验 → 哈希查库 → 检查激活状态与过期时间 → 构建权限集合。方式三OAuth2 / OIDC 登录在配置了 OAuth2 客户端后登录页会出现使用第三方账号登录入口典型场景是用 GitHub 账号登录。支持标准 OAuth2 与 OIDC 两种模式见 AppOAuth2AuthorizationServerConfiguration.ktGitHub 场景下会额外拉取已验证的主邮箱来匹配用户见 GithubOAuth2UserService.kt可配置jelu.auth.oidc-email-verification强制校验邮箱真实性防止用未验证邮箱注册方式四LDAP 认证企业级如果你的公司已有 AD/LDAP 域账号可以让 Jelu 直接复用。只需在配置中开启jelu.auth.ldap.enabledtrue并填入 LDAP 服务器地址、用户搜索过滤器等参数所有参数定义在 JeluProperties.kt 的Ldap类中具体实现见 LdapConfig.kt。方式五代理头认证Proxy Authentication当你把 Jelu 部署在 Traefik、Authelia、OAuth2-Proxy 等已经完成认证的反向代理之后可以开启代理认证开启jelu.auth.proxy.enabledtrue后Jelu 会读取请求头默认X-Authenticated-User可自定义中的用户名首次请求时自动创建用户若该用户名等于jelu.auth.proxy.admin-name则直接赋予管理员角色实现见 AuthHeaderFilter.kt 注意这种方式要求 Jelu 只能被反向代理访问否则任何人都可以伪造请求头登录。API Token 作用域Scope完整清单Jelu 借鉴了 GitHub 式的作用域设计创建 Token 时只授予必要的最小权限。全部 10 个作用域定义在 TokenScope.kt按 6 大类分组前端创建页 ApiTokens.vue 也按此分组展示分类作用域说明图书与元数据books:read查看图书、作者、标签、系列、出版社图书与元数据books:write创建/修改/删除图书及元数据阅读事件reading:read查看阅读事件与统计阅读事件reading:write创建/修改/删除阅读事件书评reviews:read查看书评书评reviews:write创建/修改/删除书评清单与书架lists:read查看自定义清单、书架、引文清单与书架lists:write创建/修改/删除清单、书架、引文导入导出import:write导入/导出数据、浏览文件系统外部元数据metadata:read从元数据提供方抓取外部数据作用域如何与 API 路径绑定ScopePathMatcher同样位于 TokenScope.kt维护了一张路径 HTTP 方法 → 所需作用域的映射表例如GET /api/v1/books→ 需要books:readPOST /api/v1/reading-events→ 需要reading:writePOST /api/v1/imports→ 需要import:write一个非常关键的安全细节未列入映射表的路径默认拒绝deny by default。这意味着即使 Token 拥有所有作用域也无法访问 Token 机制不支持的端点如用户管理、其他 Token 管理等——新端点上线前必须显式授权。权限不足时Jelu 会返回清晰的错误码401 UnauthorizedToken 无效、格式错误或已过期403 ForbiddenToken 有效但缺少所需作用域Insufficient scope for this operation哪些接口无需认证为支持嵌入与公开分享SecurityConfig.kt 对以下只读接口开放了permitAllGET /api/v1/books/**—— 图书详情可匿名访问GET /api/v1/reviews/**—— 书评可匿名访问GET /api/v1/custom-lists/**—— 自定义清单支持匿名嵌入展示/api/v1/token、/api/v1/setup/status—— Token 查询与初始化状态检查安全最佳实践清单 ✅最小权限原则给爬虫脚本只发books:read给同步工具发books:writereading:write给 Token 设过期时间尤其是临时调试用途及时吊销闲置 Token页面会显示lastUsedAt和usageCount辅助判断生产部署建议放在反向代理之后用 Proxy 认证或 OAuth2 统一管理入口记住Token 明文只显示一次请立即妥善保存Jelu 用数据库会话 哈希 Token 最小作用域 默认拒绝的组合在保持轻量自托管的同时提供了企业级的安全纵深。无论是个人书单还是团队共用你都可以按需组合上面 5 种认证方式打造最适合自己的部署方案。【免费下载链接】jeluSelf hosted read and to-read list book tracker项目地址: https://gitcode.com/gh_mirrors/je/jelu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026招聘革命:传统渠道失效与人才匹配新策略

2026招聘革命:传统渠道失效与人才匹配新策略

1. 招聘效率困局:当传统渠道集体失效2026年的招聘市场正在经历一场静悄悄的革命。我最近为三家不同规模的企业做人才诊断时发现,HR部门普遍反映一个现象:传统招聘渠道的简历转化率从2021年的平均5.8%骤降至2023年的1.2%,预计到202…

2026/8/25 9:19:08 阅读更多 →
pySMT UNSAT Core实战:像调试Bug一样解决爱因斯坦50问(含完整代码)

pySMT UNSAT Core实战:像调试Bug一样解决爱因斯坦50问(含完整代码)

pySMT UNSAT Core实战:像调试Bug一样解决爱因斯坦50问(含完整代码) 【免费下载链接】pysmt pySMT: A library for SMT formulae manipulation and solving 项目地址: https://gitcode.com/gh_mirrors/py/pysmt pySMT 是一个 Python 库…

2026/8/25 9:18:07 阅读更多 →
算法7.链式栈

算法7.链式栈

算法7.链式栈 // 07_链式栈.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include <string> #include <stack> using namespace std;// 比较符号优先级的 bool Priority(char ch, char topch) {if ((ch *…

2026/8/25 9:18:07 阅读更多 →

最新新闻

自动化测试面试10大高频问题解析与应对策略

自动化测试面试10大高频问题解析与应对策略

1. 自动化测试面试高频问题解析作为一名在测试领域摸爬滚打多年的老兵&#xff0c;我深知自动化测试岗位面试的痛点。很多优秀的候选人因为不熟悉面试套路而错失机会&#xff0c;今天我就来拆解那些面试官最爱问的10大高频问题&#xff0c;帮你轻松应对技术面。自动化测试岗位的…

2026/8/25 10:00:26 阅读更多 →
Morpeh 2024版本迁移指南:Breaking变更与最佳实践一次讲清

Morpeh 2024版本迁移指南:Breaking变更与最佳实践一次讲清

Morpeh 2024版本迁移指南&#xff1a;Breaking变更与最佳实践一次讲清 【免费下载链接】morpeh &#x1f3b2; ECS Framework for Unity Game Engine and .Net Platform 项目地址: https://gitcode.com/gh_mirrors/mo/morpeh Morpeh 是一款面向 Unity 游戏引擎与 .NET 平…

2026/8/25 10:00:26 阅读更多 →
OCaml中Resolver参数的美妙实现:详解ocaml-graphql-server的diff-list GADT设计

OCaml中Resolver参数的美妙实现:详解ocaml-graphql-server的diff-list GADT设计

OCaml中Resolver参数的美妙实现&#xff1a;详解ocaml-graphql-server的diff-list GADT设计 【免费下载链接】ocaml-graphql-server GraphQL servers in OCaml 项目地址: https://gitcode.com/gh_mirrors/oc/ocaml-graphql-server ocaml-graphql-server 是一个用 OCaml …

2026/8/25 10:00:26 阅读更多 →
FFmpeg合并.ts(或.m3u8)文件和字幕文件为新的视频文件

FFmpeg合并.ts(或.m3u8)文件和字幕文件为新的视频文件

目录 1 下载安装适合您操作系统的FFmpeg版本2 将所有的.ts文件放在一个文件夹中&#xff0c;合并.ts文件2.1 方法一&#xff0c;使用FFmpeg的concat协议来合并.ts文件2.2 方法二&#xff0c;直接使用concat协议&#xff08;适用于少量文件&#xff09; 3 使用FFmpeg将合并后的.…

2026/8/25 10:00:26 阅读更多 →
Ardent测试体系解析:用PHPUnit数据驱动构建高覆盖测试的完整清单

Ardent测试体系解析:用PHPUnit数据驱动构建高覆盖测试的完整清单

Ardent测试体系解析&#xff1a;用PHPUnit数据驱动构建高覆盖测试的完整清单 【免费下载链接】Ardent A Collections library for PHP. 项目地址: https://gitcode.com/gh_mirrors/ard/Ardent Ardent 是一个面向 PHP 的对象导向编程的集合库&#xff0c;提供 Set、Map、…

2026/8/25 10:00:26 阅读更多 →
AI时代招聘困境与智能化解决方案

AI时代招聘困境与智能化解决方案

1. 项目概述&#xff1a;当招聘遇上AI革命去年帮一家科技公司做招聘体系升级时&#xff0c;遇到个典型场景&#xff1a;HR负责人拿着算法岗位的简历问我&#xff1a;"这位候选人在顶级会议发了3篇论文&#xff0c;但学历只是普通一本&#xff0c;要不要约面试&#xff1f;…

2026/8/25 9:59:20 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子&#xff0c;从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战&#xff1a;零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run &#x1f917; Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述&#xff1a;从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”&#xff0c;这个名字对理工科学生来说&#xff0c;分量极重。每年&#xff0c;无数团队在三天三夜的时间里&#xff0c;为一个开放性问题绞尽脑汁&#xff0c;从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →