V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
a1020773312
V2EX  ›  Go 编程语言

有大神用过 jwt-go 么,我用 rsa256 签名好像不对,以前没用过,求助。

  •  
  •   a1020773312 · 2017-08-01 11:43:29 +08:00 · 1947 次点击
    这是一个创建于 2459 天前的主题,其中的信息可能已经有所发展或是发生改变。

    按照网上的教程,我试了一下 jwt-go 用 rsa256 算法签名,总报错,说调用 SignedString ()时总会出错,说“ key is invalid ”。。。 代码如下: package main

    import (
    
    	jwt "github.com/dgrijalva/jwt-go"
    	"log"
    	"io/ioutil"
    )
    
    func main(){
    	privKeyPath := "/Users/zhangzhen11/gocode/src/jwt/keys/app.rsa"
    	//pubKeyPath := "keys/app.rsa.pub"
    	var err error
    	var (
    		signKey []byte
    		//verifyKey []byte
    	)
    	signKey, err = ioutil.ReadFile(privKeyPath)
    	if err !=nil{
    		log.Printf("readfile:%v\n", err)
    		return
    	}
    	claims := &jwt.StandardClaims{
    		Issuer: "test",
    		ExpiresAt: 15000,
    	}
    	t := jwt.NewWithClaims(jwt.SigningMethodRS256, claims)
    	token , err := t.SignedString(signKey)
    	if err != nil{
    		log.Printf("sign:%v\n", err)
    		return
    	}
    	log.Printf("%v\n", token)
    }
    

    输出结果: 2017/08/01 11:40:44 sign:key is invalid

    key 应该是没问题的 我可以打印出来 key 的值,是我哪个 api 用错了么

    2 条回复    2017-08-01 16:40:14 +08:00
    a1020773312
        1
    a1020773312  
    OP
       2017-08-01 11:55:26 +08:00
    附 openssl genrsa -out app.rsa 1024
    zysidea
        2
    zysidea  
       2017-08-01 16:40:14 +08:00   ❤️ 1
    你的 signKey 获取的有问题,应该这样
    ```go
    signBytes, err := ioutil.ReadFile(privKeyPath)
    signKey, err = jwt.ParseRSAPrivateKeyFromPEM(signBytes)
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2687 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:57 · PVG 23:57 · LAX 08:57 · JFK 11:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.