我从这个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发出请求以获取这些附加信息,但我认为如果信息是由令牌携带的话会更简单,更有效。
答案 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或喜欢的颜色,这些必须特别要求。
示例电话
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会不错