活动介绍

微服务安全:JWT与MicroProfileJWT的应用

立即解锁
发布时间: 2025-08-11 17:07:26 阅读量: 2 订阅数: 4
PDF

Go微服务安全:JWT与OAuth2的整合方案.pdf

# 微服务安全:JWT 与 MicroProfile JWT 的应用 ## 1. JWT 签名验证 JWT(Json Web Tokens)是一种用于在各方之间安全传输信息的开放标准(RFC 7519)。每个 JWT 都使用头部 `alg` 声明中定义的算法进行签名,以确保其未被篡改。验证 JWT 签名的一种简单方法是将原始令牌声明的内容粘贴到 [https://jwt.io/#encoded-jwt](https://jwt.io/#encoded-jwt) 提供的表单中。具体步骤如下: 1. 将 JWT 粘贴到编码表单中,JWT 头部和有效负载部分将显示声明值。 2. JWT 头部:头部声明(尽管不一定是其值)将与特定声明匹配。 3. JWT 有效负载:声明(尽管不一定是其值)将与特定声明匹配。 4. 由于未提供公钥,签名未经验证。 要获取公钥,可运行以下命令: ```bash scripts/createpem.sh ``` ### 1.1 JWT 有效负载声明 以下是 JWT 有效负载中一些重要的声明: | 声明 | 描述 | | --- | --- | | `typ` | 声明令牌的媒体类型。 | | `iss*` | MicroProfile JWT 的颁发者。 | | `sub*` | 标识作为 JWT 主题的主体。 | | `exp*` | JWT 过期时间,自 1970 年 1 月 1 日起的秒数,过期后 JWT 无效。 | | `iat*` | JWT 颁发时间,自 1970 年 1 月 1 日起的秒数。 | | `jti*` | JWT 唯一标识符,可用于防止 JWT 被重放。 | | `upn*` | 一个人类可读的 MicroProfile JWT 自定义声明,用于在所有访问该令牌的服务中唯一标识令牌的主题或用户主体。如果此声明缺失,MicroProfile JWT 将回退到 `preferred_username` 声明;如果 `preferred_username` 也缺失,则使用 `sub` 声明。 | | `groups*` | MicroProfile JWT 自定义声明,列出主体所属的组。 | ### 1.2 获取公钥 运行上述命令后,将输出公钥,格式如下: ``` -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjJ/GYpCkgfYT1HYpa96AP8djbKiv25Yh VlZcHcIt2QX4VZPJM/qntF2m7ubPSz3zHHNQUOWYl+3xIo4EFfCcTPTBgL0aSlCsuT5+0RuajsFj ejLGa19p3eKuBjtB0buqI4SbxpitvZj4L4beBdFj+r2NZZNxeFFMrd9lORW3b4cUmk8tS6ZrgbTK Ij3adjlVMYHOkGQNNGBf1KJkdbi8UQtXaATuyFHiQCCYY/ENWGGomu+dXqvqnRRsdWBndsUcCNe+ NPwT1z3lbfYoXkldWFVvXjBnNme/f8mCMWuKBz4fGZUkt7Sdc5FPnFpsbT+0inarxIov3puDxHbB gNJ9xwIDAQAB -----END PUBLIC KEY----- ``` 将此公钥粘贴到 jwt.io 表单的公钥字段中,即可验证签名。 ### 1.3 注意事项 上述公钥仅适用于特定的令牌,不同安装的令牌和公钥会有所不同。尝试使用上述公钥验证其他安装的令牌将失败。 ## 2. 使用 MicroProfile JWT 保护交易服务 在了解了 JWT 和 MicroProfile JWT API 后,下一步是使用 MicroProfile JWT 保护交易服务。具体步骤如下: ### 2.1 添加扩展 在编写代码之前,添加 `quarkus-smallrye-jwt` 扩展: ```bash cd transaction_service mvn quarkus:add-extension -Dextensions="io.quarkus:quarkus-smallrye-jwt" # 如果交易服务未运行,启动它 mvn clean quarkus:dev -Ddebug=5006 ``` ### 2.2 配置公钥 更新 `application.properties` 文件,添加公钥和令牌颁发者信息: ```properties # Configure MicroProfile JWT mp.jwt.verify.publickey=<INSERT PUBLIC KEY HERE> mp.jwt.verify.issuer=http://keycloak.local/auth/realms/bank ``` 注意,公钥应去除 `BEGIN PUBLIC KEY` 和 `END PUBLIC KEY` 行,仅保留 Base64 编码的字符串。 ### 2.3 添加安全方法 在 `TransactionResource.java` 中添加一个安全的 REST 方法端点,用于测试 JWT 是否允许方法访问: ```java @GET @RolesAllowed("customer") @Path("/jwt-secure/{acctnumber}/balance") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response jwtGetBalance( @PathParam("acctnumber") Long accountNumber) { return getBalance(accountNumber); } ``` 此方法仅允许 `customer` 角色的用户访问。 ### 2.4 测试端点访问 最后,访问端点以验证访问权限: ```bash # 在新终端窗口中启动账户服务(如果未运行) cd account-service mvn quarkus:dev # 在新窗口中重启交易服务 cd transaction-service mvn clean quarkus:dev -Ddebug=5006 # 在新窗口中获取令牌 TOKEN=`scripts/gettoken.sh` TRANSACTION_URL=http://localhost:8088 curl -i \ -H "Accept: application/js ```
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

郝ren

资深技术专家
互联网老兵,摸爬滚打超10年工作经验,服务器应用方面的资深技术专家,曾就职于大型互联网公司担任服务器应用开发工程师。负责设计和开发高性能、高可靠性的服务器应用程序,在系统架构设计、分布式存储、负载均衡等方面颇有心得。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

Coze字幕编码与导出:确保兼容性与高质量输出的3个技巧

![Coze工作流拆解教学(特效字幕的一键生成视频)](https://ganknow.com/blog/wp-content//uploads/2023/07/Supported-Video-Formats-on-YouTube-1024x597.webp) # 1. Coze字幕编码的背景与重要性 在数字化内容日益增长的今天,字幕编码已经成为视频内容不可或缺的一部分。随着互联网的普及和多语言需求的上升,如何将字幕文件与视频内容无缝结合,保证其在各种平台和设备上的兼容性,变得尤为重要。 Coze作为一种新兴的字幕编码技术,因其独特的功能和优越的性能,正逐渐成为行业的新标准。它不仅支持多种

【AI Agent云服务与AI】:云计算提升插件能力,未来AI的新动力(云AI实战手册)

![【AI Agent云服务与AI】:云计算提升插件能力,未来AI的新动力(云AI实战手册)](https://s4.itho.me/sites/default/files/styles/picture_size_large/public/field/image/feng_mian_gu_shi_67-960-mlaas_jia_gou_tu_.jpg?itok=wuxGeBoU) # 1. AI Agent云服务概述 在当今的数字化时代,云计算已成为创新的引擎,尤其在人工智能(AI)领域。AI Agent云服务是将云计算的力量与AI技术相结合的产物,它允许企业与开发者通过网络访问强大的计算

AI Agent开发:从理论到实践】:Coze Studio本地部署的全方位指南

![AI Agent开发:从理论到实践】:Coze Studio本地部署的全方位指南](https://www.datocms-assets.com/30881/1608730764-nplindepthpart1-1.png) # 1. AI Agent开发概述 ## 1.1 人工智能与代理技术的兴起 随着计算能力的大幅提升和机器学习算法的不断进步,人工智能(AI)已经成为现代科技发展的前沿领域。AI Agent技术作为人工智能的一个分支,它能够模拟人类或其他智能实体的行为,通过感知环境、自主决策和执行任务,实现特定的目标。这一技术已被广泛应用于各种复杂的任务中,比如虚拟助手、机器人导航以

Coze工作流监控与报警:构建实时监控系统确保流程稳定

![Coze工作流监控与报警:构建实时监控系统确保流程稳定](https://images.ctfassets.net/w1bd7cq683kz/2NrQlwHVJ0zvk8dwuuQvgh/6c9c6678c75c26ee8a2e2151563dae00/Prom_componenets_and_architecture.png) # 1. 工作流监控与报警概述 工作流监控与报警作为确保企业业务流程稳定运行的重要组成部分,一直以来都是IT行业中的焦点话题。它涉及实时监控企业内部的工作流系统,及时发现并处理可能影响工作效率和系统稳定性的异常问题。有效的监控不仅要求对系统运行状态有一个全面的认

ReAct模型创新应用:AI交互设计的未来趋势

![AI智能体策略FunctionCalling和ReAct有什么区别?](https://arxiv.org/html/2404.03648v1/x5.png) # 1. ReAct模型简介 ## 简介 ReAct模型是一个创新的交互设计模型,它旨在通过动态反馈和适应机制来改善用户体验。ReAct是"反应式"和"交互式"的合成词,意味着该模型能够实时响应用户行为,并据此调整交互流程。与传统模型相比,ReAct模型提供了一个更为灵活和智能的框架,用以创建更加个性化且有效的用户体验。 ## ReAct模型的核心组成 ReAct模型的核心在于其响应机制和适应策略,它包括用户行为的实时监控、即时

内容创作新境界:Coze视频穿越在创意中的无限应用

![Coze视频穿越](https://golightstream.com/wp-content/uploads/2022/11/Live-stream-video-call-1024x575.jpg) # 1. Coze视频技术的革新力量 Coze视频技术作为当今创新的视频技术之一,它的出现极大地推动了视频内容的创造和消费方式。传统视频技术的局限性使得内容创作者在提高视频质量、优化处理速度以及增强用户体验上遇到了瓶颈。Coze技术的革新之处在于它的高效编码算法、智能内容分析以及多样化的应用平台,这些特点不仅提高了视频处理的效率,还为视频内容的个性化和智能化提供了新的可能性。 ## 2.1

智能自动化在金融领域的应用:UiPath如何用AGENT AI重塑行业

![深度解读UiPath CEO Daniel Dines:从RPA到AGENT AI的转型之路](https://global.discourse-cdn.com/uipath/original/3X/c/8/c8d547c3307c80db7379df27f48dcf7f04089372.png) # 1. 智能自动化与金融行业的融合 ## 1.1 智能自动化的基本概念 智能自动化是信息技术领域的一个革命性趋势,其核心在于将智能技术与传统自动化技术结合,通过软件机器人(Robotic Process Automation, RPA)、人工智能(AI)等技术手段,实现高效、准确、无需人工干

【Coze API在企业中的应用】:成功案例分享与实践最佳策略

![【Coze API在企业中的应用】:成功案例分享与实践最佳策略](https://career.savis.vn/wp-content/uploads/2021/09/bi%CC%80a-API.png) # 1. Coze API简介及其在企业中的重要性 Coze API为企业提供了一个强大的工具,用于构建和集成安全且高效的业务解决方案。其重要性在于它不仅简化了数据处理和交换流程,还增强了企业的业务连续性、安全性和运营效率。本章将深入探讨Coze API的基础知识,同时分析其在现代企业中的应用价值和重要性。 ## 1.1 Coze API的定义和核心功能 Coze API作为一种应

AI本地化架构设计

![AI本地化架构设计](https://www.seeedstudio.com/blog/wp-content/uploads/2023/12/pasted-image-0-1030x455.png) # 1. AI本地化架构设计概述 随着全球AI应用的蓬勃发展,本地化架构设计成为满足特定地区需求、优化性能、保障数据安全和合规性的关键。本章将探讨本地化架构设计的基本概念、重要性以及实施前的准备工作。 ## 1.1 本地化架构的定义与重要性 在信息化时代,数据和服务的即时性及个性化显得尤为重要。AI本地化架构设计强调在特定地理区域内进行数据处理和服务交付,确保数据最小化移动、降低延迟、提