如何使用 Oauth2.0 解码不透明的访问令牌

How to decode opaque Access Token with Oauth2.0

我有一个令牌密钥,其中包含登录人的电子邮件地址以及姓名,另一端 points.This 实际上用于 xero API 连接。

scope = 'offline_access accounting.reports.read accounting.settings.read openid profile email'

我需要解码此令牌密钥并获取登录的电子邮件地址和登录人的姓名。

举个例子,我的令牌密钥如下。

b9b73c12b40a3bc1441f5bda331c4d7c64c0394956d5105eec61a71de19f8153

如何解码这个不透明的访问令牌并使用 python 获取相关信息。

const token = req.headers.authorization.split(" ")[1]; //Bearer +token
const decodedToken = jwt.verify(token, "secret_message_long_string");
req.userData = { email: decodedToken.email, userId: decodedToken.userId };

此示例用于解码 nodejs 的数据。

在 python 中尝试相同的方法。导入 jwt 并使用方法 verfiy 将令牌和秘密字符串作为参数传递。

客户端不应该像 jps 所说的那样直接解码访问令牌。您有这些选择:

从 ID 令牌读取用户字段

UI 直接读取此 JWT,如 Step 18 of my blog post。 id 令牌始终具有 JWT 格式,旨在供客户端读取

使用用户信息端点

UI 可以使用上述博客 post.

的第 24 步中的消息将访问令牌发送到用户信息端点

从 API

获取用户信息

这往往是最可扩展的选项,因为您可以 return 任何您想要的信息,并且您不限于访问令牌中包含的内容。博客 post 的第 27 步使用了此选项。