脚本调用接口自动从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