文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载本文是《ChatGPT 微服务应用体系构建》系列教程中 chatgpt-api 工程的登录授权篇核心讲解如何用 SpringBoot 整合 Shiro JWT以账号密码换 Token、Token 准入访问的方式替代明文账密传参为对外暴露的 OpenAI 类 API 建立安全的准入机制。读完本文你将掌握登录鉴权的完整链路设计、Token 发放与携带方式以及它在后续公众号扫码/验证码登录演进中的位置。一、本章诉求为什么不能让用户把账密直接拼在 URL 上一个对外提供能力的 API 服务例如用户直接访问http://localhost/api调用 OpenAI 接口通常需要按用户身份做访问验证和限定。最直接的做法是把账号和密码随请求一起传递例如http://localhost/api?userIdxfgpassword123但这样存在一个非常明显的安全缺陷用户的密码明文暴露在 URL 中会随浏览器历史记录、Nginx 访问日志、代理服务器日志等途径泄露一旦被截获就相当于把账号完全交了出去。因此本章的诉求非常明确先用账号密码换取一个访问令牌Token之后用户携带 Token 访问 API例如http://localhost/api?tokenxxxxx这样即便 Token 泄露也可以做有效期控制、随时吊销安全性远高于明文账密。在真实的工程实践中Token 一般放在 HTTP 请求头如Authorization中传递这里为了降低读者在浏览器侧直接测试的门槛才选择把 Token 作为 URL 参数拼在链接后面便于手工验证。从整个项目看这套诉求与 第1节API工程搭建和简单访问认证 一脉相承——第1节解决的是接口访问前的认证拦截Nginxauth_request调用认证服务本节则更进一步解决认证通过后如何发放准入凭证的问题。而 OpenAI 服务本身存在服务器成本基于Token 时效性做用户购买与额度控制也是把服务变成可持续商业模式的起点。二、流程设计登录授权发放 Token 的完整链路整个流程可以概括为一条单向链路用户访问登录接口 ↓ 服务端用 账号 密码 校验用户身份 ↓ 校验通过 → 发放 TokenJWT ↓ 用户携带 Token 访问 OpenAI API 地址 ↓ 服务端验证 Token 有效 → 放行 / 拒绝设计要点拆解如下登录接口接收用户的账号、密码作为换取 Token 的唯一入口身份校验服务端校验账密是否匹配匹配通过才进入发牌环节发放 Token生成带有效期的 JWT 返回给用户Token 内可携带用户身份标识如 userId准入校验用户后续访问 OpenAI 地址时携带 Token服务端校验签名、有效期与用户身份校验通过才放行否则拒绝访问。这一一次登录、多次准入的模型与后续章节的演进方向一致。在 第5节公众号发送验证码鉴权登录 中登录入口从账密升级为公众号验证码/扫码但核心链路不变用户拿到唯一登录凭证 → 服务端校验 → 下发 Token → 携带 Token 使用服务。在该节的流程设计里个人公众号采用用户在公众号回复指定数字获取验证码验证码写入内存/缓存网页端输入验证码后由前端调用服务端接口校验校验通过拿到 Token 授权使用的方式企业公众号则可以简化为扫码即登录、直接下发 Token。可见 Token 是整套服务鉴权的通用枢纽。三、核心技术选型Shiro JWT 在工程中的定位本章的实现需要在 SpringBoot 工程中引入Shiro与JWT两套组件协同工作二者职责分工如下组件定位在本章承担的职责Apache ShiroJava 安全框架认证、授权、会话、加密负责登录认证流程编排接收账密、执行认证逻辑、管理 Subject 会话状态JWTJSON Web Token无状态令牌规范负责生成与校验 Token将用户身份、有效期等信息签名封装供 API 准入校验这种Shiro 管认证流程 JWT 管令牌载体的组合在 SpringBoot 工程中是一种非常常见且轻量的登录鉴权方案相比传统基于 Session 的登录态管理JWT 自带以下优势无状态服务端无需保存会话记录Token 自身携带身份与过期时间天然适合微服务/多节点部署场景可验证JWT 由Header.Payload.Signature三段组成服务端用密钥校验签名即可确认 Token 未被篡改可过期Token 内携带exp过期时间过期即失效可有效控制准入时效。仓库中 chatglm-sdk-java 的对接案例可以佐证 JWT 的实际用法对接智谱 AI 时需要把获取的 ApiKey 按.分割创建JWT-Token后把该 Token 放入Authorization: Bearer JWT请求头传给接口且由于生成 Token 较耗时工程使用 Guava 本地缓存 29 分钟有效期 30 分钟的 Token 以确保有效刷新。其示例请求头形如-H Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04ifQ.eyJhcGlfa2V5Ijoi...这段案例说明JWT 不仅是登录授权章的标准载体也是 OpenAI 类大模型服务对接时通用的鉴权凭证格式理解 JWT 的三段式结构与签名校验机制在本项目和外部模型对接中都能复用。四、Token 的携带方式与安全注意事项Token 发放后用户侧有两种主流的携带方式本章为了方便演示选择了前者携带方式示例特点与适用场景URL 参数http://localhost/api?tokenxxxxx直观易测便于浏览器手工验证但会落入访问日志不适合生产环境HTTP 请求头Authorization: Bearer xxxxx业界标准做法不进入 URL安全性更高适合正式对外服务需要注意URL 传参只是本章的演示手段并非推荐的生产实践。正式上线时更稳妥的做法是把 Token 放入请求头同时配合 HTTPS 传输加密避免 Token 在明文传输中被截获。此外在 notes.md 的面试问答环节中作者将该项目的登录鉴权能力归纳为两点技能沉淀可作为工程落地时的自查清单熟练对接微信公众号 SDK掌握验签流程与对话流程以及JWT Token 的生成和校验熟练掌握 Nginx Auth 验证模块的开发与使用用于对接口的校验和拦截。这提示我们完整的登录授权落地至少包含三件事Token 生成签发、Token 校验准入拦截、入口验证Nginx/网关层协同三者缺一不可。五、工程落地与学习路径从 chatgpt.md 的整体架构可以看到本套微服务体系以用户请求为入口经Nginx SSL 443校验转发到对应服务并做鉴权与服务控制最终完成 Token 授权使用。而 ChatGPT-v1.0 的章节介绍中也明确提到ChatGPT-API 工程对外提供的接口能力包括Nginx Shiro Auth 认证接口。也就是说Shiro 认证并不只存在于 API 工程内部还与 Nginx 层的访问控制相互配合构成网关拦截 应用内认证的双层防线。建议的动手验证路径如下在 SpringBoot 工程中引入 Shiro 与 JWT 依赖配置 Shiro 的 Realm 与登录过滤链实现登录接口接收账密 → 调用 Realm 认证 → 通过后生成 JWT 返回实现准入过滤器对受保护接口解析并校验 Token签名 有效期失败则拒绝访问按 第1节 的方式结合 Nginxauth_request做入口拦截验证代码验证通过后再针对 Shiro、JWT 关键字检索相关资料补充基础原理重点吃透 Realm、过滤器链、JWT 签名验签与过期策略这几个核心概念。六、小结本章以明文账密不可直接用于 API 访问为切入点完成了SpringBoot Shiro JWT 登录授权的方案设计与流程梳理Shiro 负责认证编排JWT 负责令牌签发与校验二者配合实现登录换 Token、Token 准入访问的安全模型。这套模型不局限于 ChatGPT 场景——任何需要付费/时效/身份限定的对外 API都可以按同一套思路落地而它也是后续公众号验证码登录、额度账户、支付购买等章节的鉴权基座。赞分享文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载相关推荐Apache Airflow Simple Auth Manager Token API 参考指南登录、鉴权与 JWT Token 获取全解析Apache Airflow Simple Auth Manager Token API 参考指南登录、鉴权与 JWT Token 获取全解析 本文以 Apa后端任务调度工作流自动化数据编排批处理数据工程流程编排Sa-Token 快速入门SpringBoot 集成与登录鉴权实战指南Sa Token 快速入门SpringBoot 集成与登录鉴权实战指南 本篇技术指南带你从零开始在 SpringBoot 项目中集成 Sa Token通过「后端认证鉴权单点登录kubeasz 部署 Kubernetes Dashboard 2.xNodePort 访问与 Token / Kubeconfig 登录鉴权实战kubeasz 部署 Kubernetes Dashboard 2.xNodePort 访问与 Token / Kubeconfig 登录鉴权实战 本文以 k云原生集群管理运维上一篇NAPS2安全扫描最佳实践证书配置与TLS加密完整指南下一篇如何快速掌握theme-ui主题配置从入门到精通的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
