Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jwt Ed25519的alg值?_Jwt_Jose_Ed25519 - Fatal编程技术网

Jwt Ed25519的alg值?

Jwt Ed25519的alg值?,jwt,jose,ed25519,Jwt,Jose,Ed25519,RFC7518有一个用于JWT的接口。但是,EdDSA没有值,例如Ed25519。在Jose中验证时,Ed25519也不被接受为有效值。Ed25519的正确alg值是多少?Ed25519是EdDSA()签名方案。另见和 根据alg需要设置为EdDSA: JWS算法:爱德华兹曲线DSA alg:EdDSA EdDSA也列在IANA注册中心的列表中(感谢@Florent Morselli的提示) 在这里,我展示了一个示例,如何使用和crypto在Node.js中生成ed25519密钥对和签名令牌,

RFC7518有一个用于JWT的接口。但是,
EdDSA
没有值,例如
Ed25519
。在Jose中验证时,
Ed25519
也不被接受为有效值。Ed25519的正确alg值是多少?

Ed25519是EdDSA()签名方案。另见和

根据
alg
需要设置为
EdDSA

JWS算法:爱德华兹曲线DSA
alg:EdDSA

EdDSA
也列在IANA注册中心的列表中(感谢@Florent Morselli的提示)


在这里,我展示了一个示例,如何使用和crypto在Node.js中生成ed25519密钥对和签名令牌,然后使用Python中的公钥验证令牌:

生成密钥对和令牌:

const{SignJWT}=require('jose/jwt/sign')
const{generateKeyPairSync}=require('crypto')
const{publicKey,privateKey}=generateKeyPairSync('ed25519');
log(publicKey.export({格式:'pem',类型:'spki'}))
log(privateKey.export({格式:'pem',类型:'pkcs8'}))
const jwt=wait new SignJWT({'id':1})
.setProtectedHeader({alg:'EdDSA'})
.setExpirationTime('2h')
.标志(私钥)
console.log(jwt)
-----开始公钥------
MCOWBQYDK2VWAYA7FYSB/9H7HVH8J1PAD5IOLFXJ4PRJFNLOWUPYKVSTOC=
-----结束公钥------

-----开始私钥------
MC4Caqawbqydk2vwbcieijtjbntukbiy5yjonih95ky3dca3krb0i2i7dkvm6cf
-----结束私钥------

EYJHBGCOIJFZERTQSJ9.eyJpZCI6MX0.RAxBAQPFOxrCfgqb56eaAz9u2lByj-WEO- JWgJH3Cyx1o1Hwjn1pA2M4NgJeob9vb2Oaw4FOeYFr6_33XMTnAQ

解码的令牌头:


{
  "alg": "EdDSA"
}
使用以下命令验证Python中的令牌:

导入jwt
公钥=”----开始公钥-----
MCOWBQYDK2VWAYA7FYSB/9H7HVH8J1PAD5IOLFXJ4PRJFNLOWOPUYKVSTOC=
-----结束公钥------“”
令牌='EYJHBGCOIJFZERTQSJ9.eyJpZCI6MX0.RAXBAQPFOXRCFQB56EAAZ9U2LBYJ-WEO-JWGJH3CYX1O1HWJN1PA2M4NGJEOB9VB2OAW4FOEYFR633xMTNAQ'
decoded=jwt.decode(令牌、公钥、算法='EdDSA',verify=True)
打印(解码)

注意:目前不支持EdDSA/ED25519算法,因此您无法验证该站点上的令牌。我也不知道有任何其他JWT网站可以验证EdDSA签名令牌。

除了有效答案外,相关规范为和,该算法名称在感谢@FlorentMorselli的评论和有用链接中列出。我在答案中添加了链接。