Golang和Goa的JWT索赔中没有范围
发布时间:2020-12-16 09:23:09 所属栏目:大数据 来源:网络整理
导读:我正在使用优秀的goa包在Go中生成我的API. 但是,我的安全中间件存在问题,当我向控制器提交持有者令牌时,由于“范围:null”,我得到“授权失败”.我正在使用Auth0进行身份验证,并且正在生成承载令牌.邮递员的确切错误是: {"id":"xOUR882s","code":"jwt_secur
我正在使用优秀的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,增加了复数版本.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |