Golang和Goa的JWT索赔中没有范围

Golang和Goa的JWT索赔中没有范围,第1张

概述我正在使用优秀的goa包在Go中生成我的API. 但是,我的安全中间件存在问题,当我向控制器提交持有者令牌时,由于“范围:null”,我得到“授权失败”.我正在使用Auth0进行身份验证,并且正在生成承载令牌.邮递员的确切错误是: {"id":"xOUR882s","code":"jwt_security_error","status":401,"detail":"authorization fa @H_301_6@ 我正在使用优秀的goa包在Go中生成我的API.

但是,我的安全中间件存在问题,当我向控制器提交持有者令牌时,由于“范围: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索赔中没有范围所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1265635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存