对于Oauth2流,我了解到用户首次使用凭据登录时,客户端应用程序会将这些凭据发送到授权服务器(例如Google)以获取访问令牌。如果该凭据有效,则将向客户端应用程序授予访问令牌,并且每次用户在客户端应用程序上进行一些活动(购买一些在线商品)
被授予后的访问令牌将存储在提供凭据本地计算机的用户的客户端上。每次用户发出一个在标头中包含嵌入式令牌的请求(例如,Restful请求)时,服务器都会通过检查JWT的格式是否正确以及签名是否正确,来验证JWT令牌以验证用户身份。现在这是我不太了解的部分,用于检查嵌入到令牌中的密钥的秘密密钥从何而来?是从Google授权服务器提供给服务器的。在第一次从授权中授予访问令牌后,是否将其存储到服务器数据库中。如果是这样,那么在授予访问令牌第一次用户登录权限之后,直到需要刷新令牌后,客户端服务器流中就不需要授权服务器了?
答案 0 :(得分:0)
访问令牌使用该密钥签名。后端可以检查签名是否有效。这样,您可以确保令牌不会被更改。 Jwt令牌是透明的,很容易创建它们或添加一些声明(例如,添加管理员角色)。只有授权服务器可以对令牌签名,因为它具有密钥。任何人都可以检查签名,因为您需要公共密钥来检查签名,任何人都可以从授权服务器获取它。
您可以详细了解数字签名的工作原理here。