[英]Error signing payload (JWT, jsrsasign)
我正在使用jsrsasign
创建JWT。 按照此处的教程进行以下操作:
// Header
var oHeader = {alg: 'RS256', typ: 'JWT'};
// Payload
var oPayload = {};
var tNow = KJUR.jws.IntDate.get('now');
var tEnd = KJUR.jws.IntDate.get('now + 1day');
oPayload.iss = "http://foo.com";
oPayload.sub = "mailto:mike@foo.com";
oPayload.nbf = tNow;
oPayload.iat = tNow;
oPayload.exp = tEnd;
oPayload.jti = "id123456";
oPayload.aud = "http://foo.com/employee";
var sHeader = JSON.stringify(oHeader);
var sPayload = JSON.stringify(oPayload);
var pbKey = KEYUTIL.getKey("-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+bg0doaHG2Pg/WplPgc0\nstTEdPyuNqD6jhvCOLrnq01R1M8QoBgiOmKhYUJrti/hybXSqp9uTp61dGPQ4KUU\nP7r4vjwzBYXzSUiS7YfCdWbX6bY8MW7eFXf3EADgNCi6NUBsTpOwKVyJuHFMxWFy\nR2Z9Pdw4gUuCrIqWaoGARIJ0Tkf5zT99C8AuwcJ46fZqPs6cNHtUaNu/CdXcgtPA\n3iXIXBZqlBkKPaNE6ATjtIUHftZhOx0aQLUDm2skbDmDre78R7GKNXPUWknfw7xV\nMpa93zYckxjce2MYNDbvmsK4gbzwm8zxYp+o0eMobOq7xe5hy/sRFbbHOZTqQWtp\nrwIDAQAB\n-----END PUBLIC KEY-----\n");
var sJWT = KJUR.jws.JWS.sign("RS256", sHeader, sPayload, pbKey);
console.log(sJWT);
我使用Ruby jwt
gem生成了公共密钥,如下所示:
rsa_private = OpenSSL::PKey::RSA.generate 2048
rsa_public = rsa_private.public_key
public_key = rsa_public.to_pem
在签署有效内容时,我不断收到以下错误:
"error"
"Uncaught Signature: unsupported public key alg: rsa (line 24)"
我究竟做错了什么?
这是JS Bin的链接: http : //jsbin.com/yehiyo/edit? js, console
您在做错的事情很简单。 您编写的代码是正确的。 但是,您不能使用公共密钥对JWT进行签名。 您需要为此使用私钥 。 生成密钥对时,您应该已经获得了一个看起来类似于公钥的文件,但是带有BEGIN PRIVATE RSA KEY
等。
这样可以解决您的问题。 祝你好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.