首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高jwt编码速度

提高jwt编码速度
EN

Stack Overflow用户
提问于 2020-06-07 19:07:12
回答 1查看 196关注 0票数 7

我有一个正在使用password授权的/token端点。因为它正在编码一个JWT令牌,所以它具有大约1秒的高延迟。有什么方法可以让签署JWT更快吗?

我在github.com/dgrijalva/jwt-go库中使用Go。

代码语言:javascript
复制
package main

import (
    "crypto/rsa"
    "git.snappfood.ir/golang/framework/assert"
    "io/ioutil"
    "time"

    
    "github.com/dgrijalva/jwt-go"
    "github.com/sirupsen/logrus"
)

var (
    private *rsa.PrivateKey
    public  *rsa.PublicKey
)

func main() {
    var err error
    var priv, pub []byte
    pub, err = ioutil.ReadFile("public.pem")
    if err!=nil{
        panic(err)
    }
    priv, err = ioutil.ReadFile("private.pem")
    if err!=nil{
        panic(err)
    }

    public, err = jwt.ParseRSAPublicKeyFromPEM(pub)
    if err!=nil{
        panic(err)
    }

    private, err = jwt.ParseRSAPrivateKeyFromPEM(priv)
    if err!=nil{
        panic(err)
    }

    data := map[string]interface{}{
        "jti": "dara",
        "scopes": func() []string {
            return []string{"sara", "dara"}
        }(),
        "aud": "aud",
        "sub": "",
    }
    cl := jwt.MapClaims{}

    for k, v := range data {
        cl[k] = v
    }
    cl["iat"] = time.Now().Add(-6 * time.Hour).Unix()
    cl["exp"] = time.Now().UTC().Add(1 * time.Hour).Unix()

    t := jwt.NewWithClaims(jwt.GetSigningMethod("RS256"), cl)

    t2 := time.Now()
    tokenString, err := t.SignedString(private)
    assert.Nil(err)
    logrus.Warn(time.Since(t2))
    logrus.Warn(tokenString)

}
EN

回答 1

Stack Overflow用户

发布于 2020-09-17 19:04:25

在Golang中,你可以随时降级到C级。但随之而来的是你的应用程序交付的复杂性大大增加。但如果有任何一个ms对你来说很重要,它可能是解决问题的办法。

但与此同时,(我还没有分析任何东西)它仍然在运行。您可以很容易地将私有/公共ParseRSAPrivateKeyFromPEM调用并行化以减少几毫秒

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

https://stackoverflow.com/questions/62244413

复制
相关文章

相似问题

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