但是,我的安全中间件存在问题,当我向控制器提交持有者令牌时,由于“范围:null”,我得到“授权失败”.我正在使用Auth0进行身份验证,并且正在生成承载令牌.邮递员的确切错误是:
{"ID":"xOUR882s","code":"jwt_security_error","status":401,"detail":"authorization Failed: required 'scopes' not present in JWT claim","Meta":{"required":["read:Meta"],"scopes":null}}
但是,我的令牌确实包括所需的范围:Meta. jwt.io返回以下解码的承载:
{ "iss": "https://learnlogic.au.auth0.com/","sub": "exJMkK7hXX56lrLwoTqna3s0jh7Gq67e@clIEnts","aud": "https://API.learn-logic.com","exp": 1494855336,"iat": 1494768936,"scopes": "read:Meta"}
我希望有人可以帮助我锻炼为什么,因为我真的不明白在goa项目中的中间件/ jwt.go中发生了什么,可能会找到here.我唯一的想法是关于Auth0格式化的持有者的东西不是兼容mIDdleware / jwt.go中的parseClaimscopes函数,但我不知道是什么.
我有以下main.go代码:
b,err := IoUtil.Readfile("util/jwt.key") if err != nil { return } block,_ := pem.Decode([]byte(b)) var cert *x509.Certificate cert,_ = x509.ParseCertificate(block.Bytes) rsaPublicKey := cert.PublicKey.(*rsa.PublicKey) fmt.Println(rsaPublicKey.N) fmt.Println(rsaPublicKey.E) fmt.Println(cert) var keyx = []jwt.Key{rsaPublicKey} var jwtResolver = jwt.NewSimpleResolver(keyx) app.UseJWTMIDdleware(service,jwt.New(jwtResolver,nil,app.NewJWTSecurity()))
我正在读取的证书与jwt.io中用于解码承载令牌的证书相同.
任何帮助深表感谢.
解决方法 根据这张票 https://github.com/goadesign/goa/issues/1228,问题是由于只有对单一名称“范围”而非复数“范围”的索赔的支持.这个PR https://github.com/goadesign/goa/pull/1399,增加了复数版本. 总结以上是内存溢出为你收集整理的Golang和Goa的JWT索赔中没有范围全部内容,希望文章能够帮你解决Golang和Goa的JWT索赔中没有范围所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)