为什么我的Auth0 id_token不包含有关用户的任何信息?

时间:2016-11-09 19:36:36

标签: reactjs login auth0

我从这个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服务器,因此我需要profile-object中的属性成为令牌的一部分。如何让id_token包含所有这些属性,以便我可以在我的API服务中解析它并在用户第一次登录时存储它?

在我看来,我无法使用浏览器localStorage中的profile-object,因为它需要由Auth0签名才能使我的API服务器信任该信息。

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

2 个答案:

答案 0 :(得分:2)

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

请参阅Scopes - Requesting specific claims,了解您可以在id_token参数中传递的内容,以便影响$pageHtml = preg_replace("|=\"%7B%7B%20asset|", "=\"{{ asset", $pageHtml); $pageHtml = preg_replace("|\)%20%7D%7D\"|", ") }}\"", $pageHtml); 的内容。

答案 1 :(得分:0)

要添加到JoãoAngelo的答案,您不能在范围内请求整个“App_Metadata”对象。如果有应用特定字段,例如lang或喜欢的颜色,这些必须特别要求。

示例App MetaData enter image description here

示例电话

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会不错