首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RS256从Xero解析JJWT

使用RS256从Xero解析JJWT
EN

Stack Overflow用户
提问于 2020-09-17 17:11:46
回答 2查看 265关注 0票数 1

我正在尝试解析Xero for SSO中的JWT。Xero文档声明“JWT是使用您的客户端秘密和RS256签名算法签名的JSON有效负载”。我可以从Xero那里拿到JWT。我知道我的“客户端秘密”(字符串)。

如何将其整合到setSigningKey中以验证对RS256的响应?使用Java。谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-09-17 23:13:22

您的目标是只查看id_token中的数据,对吗?

如果您的目标是验证https://openid.net/developers/certified/的合法性,我建议您使用一个库来处理验证JWT的安全性部分

但是,如果您要查找的只是其中包含的数据(电子邮件、名字、姓氏),则可以使用此库简单地解码JWT。或者签出你自己的解码函数(它将以编程方式查找散列算法并为你解码)

票数 0
EN

Stack Overflow用户

发布于 2020-12-31 11:15:54

感谢你提出这个问题。我是作为一个完全的初学者来到这里的,有一个相当长的学习曲线。因为我代理了Xero signin,所以我可以用一个应用程序支持多个域,所以我需要手动处理oauth2的事情。在这方面几乎没有任何问题,这让我有点抓狂,所以我添加了一个python答案,以防它对其他人有帮助。

在python3中,可以这样做:

代码语言:javascript
复制
    # using pip install pyjwt[crypto]
    import jwt
    ...
         def decode_id_token(self,id_token):
             #a method in a class I have, self.client_id is from the Xero app
             #decoded_without_verification = jwt.decode(id_token,options={"verify_signature":False})

             discovery_url = "https://identity.xero.com/.well-known/openid-configuration/jwks"
             jwks_client = jwt.PyJWKClient(discovery_url)
             signing_key = jwks_client.get_signing_key_from_jwt(id_token)
             decoded = jwt.decode(id_token,signing_key.key,
algorithms=["RS256"],audience=self.client_id)
             return decoded

我不知道是否有某种方法可以避免对发现URL进行硬编码。我从Xero的讨论中得到了它:https://community.xero.com/developer/discussion/115505302

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63934848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档