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

2017-08-01 11:43:29 +08:00
 a1020773312

按照网上的教程,我试了一下 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 用错了么

2143 次点击
所在节点    Go 编程语言
2 条回复
a1020773312
2017-08-01 11:55:26 +08:00
附 openssl genrsa -out app.rsa 1024
zysidea
2017-08-01 16:40:14 +08:00
你的 signKey 获取的有问题,应该这样
```go
signBytes, err := ioutil.ReadFile(privKeyPath)
signKey, err = jwt.ParseRSAPrivateKeyFromPEM(signBytes)
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/379491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX