如何生成JWT Token并在Oracle SCM Cloud中使用,解决签名无效报错
Oracle SCM Cloud JWT签名无效问题解决方案
问题根因排查
- x5t生成命令文件不匹配:你生成的证书文件为
scmnowtest.cer,但生成x5t的命令中使用的是不存在的scmnowtest.pem,会导致x5t值错误,是签名无效的高频诱因 - 密钥长度不符合要求:你生成的是1024位RSA密钥,目前Oracle SCM Cloud默认要求最低2048位密钥,1024位密钥会被服务直接拒绝
- JWT字段配置错误:头、载荷字段不符合Oracle SCM的规范要求,或算法选择错误
- 密钥粘贴格式错误:在工具中粘贴私钥时未携带完整的PEM格式头尾标识
修复步骤
- 重新生成符合长度要求的密钥和证书
执行以下命令替换原有1024位密钥:openssl genrsa -out scmnowtest.key 2048 openssl req -new -x509 -key scmnowtest.key -out scmnowtest.cer -days 365 - 转换证书格式并生成正确的x5t
先将cer格式证书转换为pem格式,再生成x5t:# 转换证书格式 openssl x509 -inform der -in scmnowtest.cer -out scmnowtest.pem # 生成x5t echo $(openssl x509 -in scmnowtest.pem -fingerprint -noout) | sed 's/SHA1 Fingerprint=//g' | sed 's/://g' | xxd -r -ps | base64 - 校验JWT配置
- 头配置必须指定算法为RS256,携带正确的x5t值:
{ "alg": "RS256", "typ": "JWT", "x5t": "<上一步生成的x5t值>" } - 载荷配置必须符合Oracle SCM规范,注意有效期最长为3600秒,时间戳使用UTC时间:
{ "iss": "<你在Oracle SCM中注册的客户端ID>", "sub": "<SCM授权用户名>", "aud": "<你的SCM实例访问地址>", "iat": <当前UTC时间戳>, "exp": <当前UTC时间戳+3600> }
- 头配置必须指定算法为RS256,携带正确的x5t值:
- 签名校验配置
在工具的签名区域,完整粘贴scmnowtest.key的全部内容(包含-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----标识),公钥区域粘贴scmnowtest.cer的完整内容即可完成本地签名校验。
内容的提问来源于stack exchange,提问作者Jitender Mahlawat
相关产品推荐
相关产品推荐

