2016-11-08 82 views
1

我试图从我的客户端发送一个Auth0 JWT到我的服务器,并令牌验证。我通过AuthHttp头将从auth0认证返回的token_id发送到我的服务器,我可以在PHP中没有问题的情况下获得它。Auth0 JWT令牌验证在PHP

简短:

  • 角2 Auth0 JWT被发送到PHP服务器。
  • 我如何验证签名是否正确?

我有秘密ID,我有JWT助手类与编码和解码。

如何检查的标题和正文=智威汤逊的签名送过来,如果是连做了正确的道路。

编辑:

我通过我的令牌,该令牌是

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvbG93aWUuZXUuYXV0aDAuY29tXC8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwNDY4ODk4NjgxNzEwNjQ3Mjc5MCIsImF1ZCI6IlYwWWVaREliYmVGdEJ4Z3F2UkNzVkFjWWxscXpaZGlNIiwiZXhwIjoxNDc4NzMxNjIzLCJpYXQiOjE0Nzg2OTU2MjN9._uyKrxJ0lPR-tEPjOFiI5ygeiM689gqURcIfG4sWkWc

中,我再拿到这个令牌的身体,使其进入阵阵Ÿ

Array (
[iss] => https://lowie.eu.auth0.com/ 
[sub] => google-oauth2|104688986817106472790 
[aud] => V0YeZDIbbeFtBxgqvRCsVAcYllqzZdiM 
[exp] => 1478731623 
[iat] => 1478695623) 

一旦我有数组,这是我的有效载荷吗?

//这里的标记的图像被验证为正确 https://gyazo.com/93777863d988d8c6ef0fc4ea50755949

那么,为什么下面的代码不给我同样的道理?

$jwt = JWT::encode($bodyArray, "SuperSecureSecretSecret"); 

但我收到此回

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvd2llLmV1LmF1dGgwLmNvbS8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwNDY4ODk4NjgxNzEwNjQ3Mjc5MCIsImF1ZCI6IlYwWWVaREliYmVGdEJ4Z3F2UkNzVkFjWWxscXpaZGlNIiwiZXhwIjoxNDc4NzMxNjIzLCJpYXQiOjE0Nzg2OTU2MjN9.6lEg_0h0zytQZVBqDe-ZIS5PoSkFAJhWtRYSgaDCesY

回答

0

你应该使用支持您使用的智威汤逊签名的类型现有的库。有关PHP的可用选项的快速参考,请检查中的jwt.io部分。

使用现有的库首选在大多数情况下,但是,它也很重要,做图书馆的质量评估一些。

对于JWT签名验证阅读这篇文章(Critical vulnerabilities in JSON Web Token libraries),以确保您的库的使用不会导致可能存在的漏洞。


更新:因为它们是用不同的密钥签名的,并且有效载荷也不同

令牌是不同的;在一个iss"https://lowie.eu.auth0.com/"而另一方面是"https:\/\/lowie.eu.auth0.com\/"。您可以通过使用Base64解码器对有效载荷进行解码来查看原始输出。

更重要的是,你不应该产生任何标记,只是确认它们是有效的和可信的发行人发行到您委派实际的认证过程。

+0

我用的火力之一,有没有具体的一个Auth0,看到更新的问题,请 –

+0

智威汤逊是一个标准,以便为您的技术选择会做任何兼容的库。 –

+0

虽然我使用的密钥是正确的并且直接从auth0复制,但我理解有效负载问题。你确定钥匙是不正确的? –