【问题标题】:Oauth2 flow after access token is granted授予访问令牌后的 Oauth2 流程
【发布时间】:2020-03-31 02:02:39
【问题描述】:

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

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

【问题讨论】:

    标签: oauth oauth-2.0 jwt jwt-auth


    【解决方案1】:

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

    您可以阅读有关数字签名如何工作的更多信息here

    【讨论】:

    • 检查签名是什么意思?您的意思是检查签名中的“header.payload”是否与标头和有效负载分别相同?如果是这样,那么密钥和公钥是相同的权利,因为如果内容有效,那么令牌是由服务器签名的吗?
    • 没有。签名不在标头中,密钥和公钥不一样。公钥和私钥是一对。服务器使用私钥生成签名并保密。公钥用于检查签名,它是公开的,所以任何人都可以得到它并检查签名是否有效。你可以在这里阅读更多:auth0.com/docs/tokens/guides/jwt/…
    猜你喜欢
    • 2021-07-25
    • 2015-07-21
    • 2019-04-15
    • 2019-08-06
    • 2018-03-03
    • 2021-05-18
    • 1970-01-01
    • 2020-09-13
    • 2019-07-22
    相关资源
    最近更新 更多