【发布时间】:2019-08-22 17:31:42
【问题描述】:
我一直在尝试从 auth0-js 升级到 @auth0/auth0-spa-js,尽管我无法专心阅读来自令牌又是从await useAuth0().getTokenSilently()获得的
我使用jwt.io 来解密令牌,这就是我在有效负载中得到的:
{
"iss": "https://TENANT_NAME.auth0.com/",
"sub": "auth0|SOME_HASH",
"aud": [
"https://API_IDENTIFIER",
"https://TENANT_NAME.auth0.com/userinfo"
],
"iat": 1563699940,
"exp": 1563786340,
"azp": "SOME_OTHER_HASH",
"scope": "openid profile email"
}
当我使用 auth0-js 时,我可以将 scope: "openid email" 添加到 new auth0.WebAuth({...}) 和瞧——我有 email 和 email_verified在解密令牌的有效负载中。
我相信2 part series of tutorials 无法回答我的问题,并且从我的 Apollo 配置中的钩子 getTokenSilently() 检索令牌本身也是一个挑战。但是,我喜欢 SPA 的重定向实现。请问,您能否建议一种在令牌的有效负载中包含 email 和 email_verified 的正确方法?
更新
通过阅读this piece of documentation on api-tokens,我了解到我从getTokenSilently() 获得的令牌称为访问令牌。直到今天,我一直在我的所有请求标头中使用 ID 令牌,这可能是一个不好的方法:
在符合 OIDC 的管道中,ID 令牌不应用作 API 令牌。
此外,文档说:
令牌不包含用户的任何信息,除了用户 ID(位于 sub 声明中)。
在许多情况下,您可能会发现检索其他用户信息很有用。您可以通过使用访问令牌调用 /userinfo API 端点来做到这一点。
我是通过关注the shell example 完成的。我已经使用我的访问令牌发送了请求,并且神奇地从 Auth0 的自定义 API 中获得了一个包含用户个人资料信息的对象。
我们已经接近了,将“sub”转换为驻留在 Auth0 的自定义 API 中的用户配置文件的算法是什么,我可以为我用 ruby 编写的后端实现它?
【问题讨论】:
标签: jwt access-token auth0