授予访问令牌后的Oauth2流

授予访问令牌后的Oauth2流,oauth,oauth-2.0,jwt,jwt-auth,Oauth,Oauth 2.0,Jwt,Jwt Auth,对于Oauth2流,我知道用户第一次使用凭据登录时,客户端应用程序会将这些凭据发送到授权服务器(例如Google)以获取访问令牌。如果该凭据有效,则每次用户在客户端应用上执行某些活动(购买一些在线项目)时,都会向客户端应用授予访问令牌 授权后的访问令牌将存储在客户端,即在本地计算机上提供凭据的用户。每次用户发出一个请求(例如Restful请求),其中包含头中嵌入的令牌,服务器将验证JWT令牌,通过检查JWT是否格式正确以及签名来验证用户身份。现在有一部分我不太明白,用于检查嵌入令牌的密钥的密钥来

对于Oauth2流,我知道用户第一次使用凭据登录时,客户端应用程序会将这些凭据发送到授权服务器(例如Google)以获取访问令牌。如果该凭据有效,则每次用户在客户端应用上执行某些活动(购买一些在线项目)时,都会向客户端应用授予访问令牌


授权后的访问令牌将存储在客户端,即在本地计算机上提供凭据的用户。每次用户发出一个请求(例如Restful请求),其中包含头中嵌入的令牌,服务器将验证JWT令牌,通过检查JWT是否格式正确以及签名来验证用户身份。现在有一部分我不太明白,用于检查嵌入令牌的密钥的密钥来自哪里?是否从google授权服务器提供给服务器。在首次从授权中授予访问令牌后,将其存储到服务器数据库中。如果这是真的,则在首次用户登录时授予访问令牌后,在客户端-服务器流中不需要授权服务器,直到需要刷新令牌为止?

使用该密钥对访问令牌进行签名。后端可以检查签名是否有效。通过这种方式,您可以确保令牌不会被更改。Jwt令牌是透明的,很容易创建它们或添加一些声明(例如添加管理员角色)。只有授权服务器才能对令牌进行签名,因为它具有密钥。任何人都可以检查签名,因为您需要公钥来检查签名,并且任何人都可以从授权服务器获得签名


您可以阅读有关数字签名工作原理的更多信息。

检查签名是什么意思?你的意思是检查信号中的“header.payload”是否分别与header和payload相同?如果是这种情况,则密钥和公钥是相同的权限,因为如果内容有效,则令牌由服务器权限签名?否。签名不在标头中,并且密钥和公钥不相同。公钥和私钥是成对的。服务器使用私钥生成签名,并且它是保密的。公钥用于检查签名,它是公共的,所以任何人都可以获得它并检查签名是否有效。您可以在此处阅读更多内容: