news 2026/7/15 4:30:58

python-129-KeyCloak学习之(三)脚本调用接口自动从keycloak中获取公钥

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python-129-KeyCloak学习之(三)脚本调用接口自动从keycloak中获取公钥

文章目录

  • 1 自动从keycloak获取公钥
    • 1.1 X.509证书vs裸RSA公钥
    • 1.2 提取公钥
  • 2 基于flask_jwt_extended(app.py)
    • 2.1 代码功能分步解析
      • 2.1.1 配置与发现 (Discovery)
      • 2.1.2 公钥提取与配置
      • 2.1.3 创建受保护的路由
    • 2.2 整体代码
  • 3 基于authlib(app.py)
    • 3.1 代码功能分步解析
      • 3.1.1 配置与发现(Discovery)
      • 3.1.2 公钥导入与验签器设置
      • 3.1.3 创建受保护的路由
    • 3.2 整体代码

分别利用flask_jwt_extended库和Authlib库来验证由Keycloak颁发的JWT(JSON Web Token),从而保护特定的API接口。

1 自动从keycloak获取公钥

如果你希望你的Flask代码能够自动从Keycloak获取公钥(而不是硬编码,需要把代码升级为支持OIDC Discovery的版本)。

1.1 X.509证书vs裸RSA公钥

1、Keycloak页面显示的(手动复制的):
这是标准的PKCS#8 / X.509 SubjectPublicKeyInfo格式。它包含了一些元数据头(告诉程序“这是一个RSA 公钥”),然后才是具体的密钥数据。它的 Base64内容通常以MIIBIjAN… 开头。

2、JWKS(x5c)里的内容:
JWKS标准中的x5c字段存放的是X.509证书的DER编码。
区别点: 证书不仅包含公钥,还包含颁发者、有效期、序列号等证书特有的元数据。
结果: 因为头部信息不同,所以即使它们指向同一个密钥对,Base64 字符串也是完全不同的。

既然x5c是证书,我们就把它当证书加载,然后从中提取公钥。这是最稳健的做法。

1.2 提取公钥

importrequests from cryptography
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 4:30:55

《计算机网络》核心考点实战:从历年真题到解题策略

1. 计算机网络考试题型解析与备考策略计算机网络作为计算机专业的核心课程,期末考试通常包含简答题、应用题和计算题三大类型。从历年真题来看,这三类题型占比约为3:3:4,其中计算题分值最高但也是失分重灾区。简答题主要考察基础概念的理解&a…

作者头像 李华
网站建设 2026/7/15 4:30:52

CH9141蓝牙透传模块实战:从智能车竞赛到快速原型开发

1. CH9141蓝牙透传模块初体验第一次拿到CH9141模块时,我正为智能车竞赛的无线调试发愁。传统的有线调试需要频繁插拔串口线,不仅效率低,还容易在高速行驶中造成接触不良。这个指甲盖大小的模块完美解决了这些问题——它就像给单片机装上了&qu…

作者头像 李华
网站建设 2026/7/15 4:26:44

MyTT库实战:无需TA-Lib,用Python轻松复现通达信技术指标

1. 为什么选择MyTT替代TA-Lib?如果你曾经尝试在Python中复现通达信的指标公式,大概率踩过TA-Lib这个坑。作为传统金融分析库,TA-Lib的安装过程堪称噩梦——需要先安装C语言编译环境,Windows用户还得折腾whl文件,Mac用户…

作者头像 李华
网站建设 2026/7/15 4:26:31

从刚柔耦合动力学建模到 Simulink 多方法仿真实现

1. 刚柔耦合系统建模的核心挑战刚柔耦合系统在机器人、航空航天和精密机械等领域越来越常见。这类系统既包含刚性部件的整体运动,又涉及柔性部件的弹性变形,两者相互影响形成复杂的动力学行为。我在实际项目中遇到过机械臂末端振动、卫星太阳能板展开抖动…

作者头像 李华
网站建设 2026/7/15 4:26:28

【Java 8 新特性】Java 8 BigDecimal 分组聚合与统计

1. Java 8中的BigDecimal分组聚合基础 在金融和电商系统中,我们经常需要处理精确的金额计算。BigDecimal作为Java中处理高精度数值计算的利器,配合Java 8的Stream API,可以轻松实现复杂的数据聚合操作。先来看个电商场景的例子:假…

作者头像 李华