【问题标题】:Why does my Auth0 id_token not contain any information about the user?为什么我的 Auth0 id_token 不包含有关用户的任何信息?
【发布时间】:2017-03-23 17:12:28
【问题描述】:

我从React sample application from Auth0 开始,通过 Auth0 登录工作正常,但没有给我预期的令牌。

登录后,浏览器 localStorage 包含一个 id_token 和一个配置文件对象。当我解码 id_token 时,我看到有效负载包含如下内容:

{
  "iss": "https://mycompany.eu.auth0.com/",
  "sub": "auth0|5821bc27f92ca3261c628a26",
  "aud": "2A8cgDBm86kLCtCNtUMcKPL2G3oqjIdE",
  "exp": 1478755859,
  "iat": 1478719859
}

个人资料包含电子邮件和许多其他来自在 Auth0 中注册的用户个人资料的好东西。

我需要将令牌解析到我的 API 服务器,因此我需要将配置文件对象中的属性作为令牌的一部分。如何使 id_token 包含所有这些属性,以便我可以在我的 API 服务中解析它并在用户第一次登录时存储它?

如我所见,我无法使用在浏览器 localStorage 中找到的配置文件对象,因为它需要由 Auth0 签名才能让我的 API 服务器信任该信息。

我也知道我可以使用 id_token 从我的 API 服务器直接向 Auth0 发出请求以获取这些附加信息,但我只是认为如果信息由令牌携带会更简单、更有效.

【问题讨论】:

    标签: reactjs login auth0


    【解决方案1】:

    要添加到 João Angelo 的答案中,您不能请求范围内的整个“App_Metadata”对象。如果有特定于应用程序的字段,例如lang 或者最喜欢的颜色,这些都得专门说出来。

    示例应用元数据

    示例调用

    https://example.auth0.com/authorize
      ?response_type=token
      &client_id=YOUR_CLIENT_ID
      &redirect_uri=http://jwt.io&connection=google-oauth2
      &scope=openid+lang+favoriteColor

    scope parameter 可能还有其他警告,当您遇到问题时最好询问 Auth0

    【讨论】:

      【解决方案2】:

      这些是id_token 中默认包含的声明;可以通过传递具有适当值的 scope 参数来请求包含其他声明。

      请参阅Scopes - Requesting specific claims,了解您可以在scope 参数中传递什么以影响id_token 的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 2016-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多