Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单页应用程序授权_Php_Angularjs_Authentication_Authorization_Jwt - Fatal编程技术网

Php 单页应用程序授权

Php 单页应用程序授权,php,angularjs,authentication,authorization,jwt,Php,Angularjs,Authentication,Authorization,Jwt,我正在AngularJS上开发SPA应用程序,它从PHP上编写的RESTAPI接收数据。我需要为它实现JWT授权。我有一个简单的PHP JWT库,可以对JWT令牌进行编码和解码,但不知道如何验证JWT令牌。有人能给我解释一下PHP端的JWT验证步骤吗?您需要首先解码标头(这是按句点分割后JWT的第一部分)。”这将包含用于签名的算法,如: { "alg": "HS256", "cty": "JWT" } 这意味着使用带有SHA-256的HMAC创建此令牌的签名。HMAC是通过将秘密连接到

我正在AngularJS上开发SPA应用程序,它从PHP上编写的RESTAPI接收数据。我需要为它实现JWT授权。我有一个简单的PHP JWT库,可以对JWT令牌进行编码和解码,但不知道如何验证JWT令牌。有人能给我解释一下PHP端的JWT验证步骤吗?

您需要首先解码标头(这是按句点分割后JWT的第一部分)。”这将包含用于签名的算法,如:

{
  "alg": "HS256",
  "cty": "JWT"
}
这意味着使用带有SHA-256的HMAC创建此令牌的签名。HMAC是通过将秘密连接到消息并计算散列而生成的MAC,在这种情况下,散列函数是SHA-256。因为,给定一个散列是不可能(或者至少在硬件方面非常昂贵)计算输入的,即使知道消息是什么,您也猜不到密钥。但是给定消息(JWT的第二部分)和密钥,您可以再次计算散列并验证是否等于签名(JWT的第三部分)。在这个答案中有更多关于HMAC的信息

不言而喻,尽管这是一种非常常见的算法,但JWTs并不是唯一的算法,因此它的头表示该算法。例如,Google JWT使用非对称密钥签名,即它们发布密钥的公共部分,该部分可用于验证签名,但不能用于签名。该算法是RS256(又称RSA SHA-256)

你会发现这个网站对调试非常有用。您还可以在这里看到不同的算法和多种语言的不同实现的集合

Firebase有一个PHP实现,可以对JWTs进行签名和验证