Php 单页应用程序授权
我正在AngularJS上开发SPA应用程序,它从PHP上编写的RESTAPI接收数据。我需要为它实现JWT授权。我有一个简单的PHP JWT库,可以对JWT令牌进行编码和解码,但不知道如何验证JWT令牌。有人能给我解释一下PHP端的JWT验证步骤吗?您需要首先解码标头(这是按句点分割后JWT的第一部分)。”这将包含用于签名的算法,如: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是通过将秘密连接到
{
"alg": "HS256",
"cty": "JWT"
}
这意味着使用带有SHA-256的HMAC创建此令牌的签名。HMAC是通过将秘密连接到消息并计算散列而生成的MAC,在这种情况下,散列函数是SHA-256。因为,给定一个散列是不可能(或者至少在硬件方面非常昂贵)计算输入的,即使知道消息是什么,您也猜不到密钥。但是给定消息(JWT的第二部分)和密钥,您可以再次计算散列并验证是否等于签名(JWT的第三部分)。在这个答案中有更多关于HMAC的信息
不言而喻,尽管这是一种非常常见的算法,但JWTs并不是唯一的算法,因此它的头表示该算法。例如,Google JWT使用非对称密钥签名,即它们发布密钥的公共部分,该部分可用于验证签名,但不能用于签名。该算法是RS256(又称RSA SHA-256)
你会发现这个网站对调试非常有用。您还可以在这里看到不同的算法和多种语言的不同实现的集合
Firebase有一个PHP实现,可以对JWTs进行签名和验证