首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在药剂中生成JWS令牌

在药剂中生成JWS令牌
EN

Stack Overflow用户
提问于 2019-03-15 14:34:54
回答 2查看 637关注 0票数 0

我正在尝试使用Elixir创建JWS令牌。我得到的是:

  • RSA私钥
  • 基64编码的sha256证书拇指指纹
  • 标记标头
  • 标记体

我需要的是:

  • 令牌签名

JWS头如下所示

代码语言:javascript
复制
{ 
  "x5t#S256": {{ cert thumbprint }},
  "alg":"RS256"
}

为了获得标头标记,我只需将其转换为base64,它就完成了。与令牌体一样,我只是将有效负载转换为base64。

问题是如何获得令牌签名。据我所知,应该这样做:

代码语言:javascript
复制
token signature = base64(rsa-sha256(token header + "." + token body))

Q1:我的逻辑正确吗?

Q2:如何对药物进行rsa-sha256加密?还是和:crypto.hash(sha256, ...)一样

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-16 06:18:43

我还没有在Elixir中使用JWS,但我决定将其作为一个练习进行尝试。可以使用RSA生成JWS签名,如下所示:

代码语言:javascript
复制
rsa_private_key = JOSE.JWK.from_pem_file("rsa-2048.pem")
header = %{"alg" => "RS256"}
payload = %{"example" => "foo"}

JOSE.JWT.sign(rsa_private_key, header, payload)

输出:

代码语言:javascript
复制
{%{alg: :jose_jws_alg_rsa_pkcs1_v1_5},
 %{
   "payload" => "eyJleGFtcGxlIjoiZm9vIn0",
   "protected" => "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9",
   "signature" => "T2llXS2pGN-jev10Xd5EZQmaEih_dn9DIn5FJJg8ocEwIpNLupEWiNLz-5mP21z9JGpyYPFaRuq77AtKL67nP7KMDTpKKYJonOxQdL31sHU4vTKBRf-2XcVbDLGkST5dUMUWHOS106Sw_0x7DSiuFBUzkkYQ_lZKES8idVUp88Kx4uWU65Yoti0_Pu7aVLRGWDu0EiMjzuTPTBkMoib21VEVBqrJ4jiKXFudEFiNNSaV_GOH9yNZqyxwl4RhCYYT9U-Mda8Dc7xPjQk0LaJhwlaV91OhxJQHP2fGR8XkznHFlRRHTEsesYgl9OKZuSzVXoffydLc1VotphKUnG1WZQ"
 }}

如果你想要简略的形式:

代码语言:javascript
复制
JOSE.JWT.sign(rsa_private_key, header, payload) |> JOSE.JWS.compact

生产:

代码语言:javascript
复制
{%{alg: :jose_jws_alg_rsa_pkcs1_v1_5},
"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleGFtcGxlIjoiZm9vIn0.T2llXS2pGN-jev10Xd5EZQmaEih_dn9DIn5FJJg8ocEwIpNLupEWiNLz-5mP21z9JGpyYPFaRuq77AtKL67nP7KMDTpKKYJonOxQdL31sHU4vTKBRf-2XcVbDLGkST5dUMUWHOS106Sw_0x7DSiuFBUzkkYQ_lZKES8idVUp88Kx4uWU65Yoti0_Pu7aVLRGWDu0EiMjzuTPTBkMoib21VEVBqrJ4jiKXFudEFiNNSaV_GOH9yNZqyxwl4RhCYYT9U-Mda8Dc7xPjQk0LaJhwlaV91OhxJQHP2fGR8XkznHFlRRHTEsesYgl9OKZuSzVXoffydLc1VotphKUnG1WZQ"}

这是公钥,如果您想要验证它的话:

代码语言:javascript
复制
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAtRPXSP1W+5sgVLeRFYrrF6L7+gaEkPOWV2FDtPL/vRQH77bicJYb
oVytE/8JyHj8kH24hxwCy2LFl5fZLaIrqYBy1B1t8LtxTRVhi3JIc76IGZ3dfxrz
Dnv94Vu9BRxE7y37f7w8ulDVlGpmJhfCIMj8SYJrFWgHlQB2u7c/B43RE6uphRfD
nr4FkJ3ChUFKhuVZHm27r5/CllHNhMejA/WawtlWKdU33In1Xp2O+GxjLKoYuGGQ
U9MdrismDtn6bVcq5K97bByxelJel2rUG4sbtQk01gVtfun63rSzOP9EkNJOoRll
YDm3HQlDUY7+D9AMG3XlQuR7tlDXQtGIJQIDAQAB
-----END RSA PUBLIC KEY-----
票数 2
EN

Stack Overflow用户

发布于 2019-03-16 22:12:02

请参阅JWT与凤凰城的长生不老药上的示例

使用:bcrypt_elixir:guardian

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55184962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档