Den*_*sel 57
OAuth 2.0 规范文档中描述了刷新令牌流程。
\n +--------+ +---------------+\n | |--(A)------- Authorization Grant --------->| |\n | | | |\n | |<-(B)----------- Access Token -------------| |\n | | & Refresh Token | |\n | | | |\n | | +----------+ | |\n | |--(C)---- Access Token ---->| | | |\n | | | | | |\n | |<-(D)- Protected Resource --| Resource | | Authorization |\n | Client | | Server | | Server |\n | |--(E)---- Access Token ---->| | | |\n | | | | | |\n | |<-(F)- Invalid Token Error -| | | |\n | | +----------+ | |\n | | | |\n | |--(G)----------- Refresh Token ----------->| |\n | | | |\n | |<-(H)----------- Access Token -------------| |\n +--------+ & Optional Refresh Token +---------------+\n \n \n (A) The client requests an access token by authenticating with the\n authorization server and presenting an authorization grant.\n \n (B) The authorization server authenticates the client and validates\n the authorization grant, and if valid, issues an access token\n and a refresh token.\n \n (C) The client makes a protected resource request to the resource\n server by presenting the access token.\n \n (D) The resource server validates the access token, and if valid,\n serves the request.\n \n (E) Steps (C) and (D) repeat until the access token expires. If the\n client knows the access token expired, it skips to step (G);\n otherwise, it makes another protected resource request.\n \n (F) Since the access token is invalid, the resource server returns\n an invalid token error.\n \n (G) The client requests a new access token by authenticating with\n the authorization server and presenting the refresh token. The\n client authentication requirements are based on the client type\n and on the authorization server policies.\n \n (H) The authorization server authenticates the client and validates\n the refresh token, and if valid, issues a new access token (and,\n optionally, a new refresh token).\nRun Code Online (Sandbox Code Playgroud)\n关于您的问题:
\nHan*_* Z. 26
假设这是关于OAuth 2.0,因为它是关于JWT和刷新令牌......:
就像访问令牌一样,原则上刷新令牌可以包括你描述的所有选项; 当授权服务器想要无状态或者想要向呈现它的客户端强制执行某种"拥有证明"语义时,可以使用JWT; 请注意,刷新令牌与访问令牌的不同之处在于它不会呈现给资源服务器,而只会呈现给首先发布它的授权服务器,因此JWTs作为访问令牌的自包含验证优化确实如此.不适用于刷新令牌
这取决于数据库的安全性/访问权限; 如果数据库可以被其他方/服务器/应用程序/用户访问,那么是(但您的里程可能因存储加密密钥的位置和方式而异)...
授权服务器可以同时发出访问令牌和刷新令牌,具体取决于客户端获取它们的授权; 规范包含每个标准化拨款的详细信息和选项
Bhu*_*ngh 25
以下是撤销您的JWT访问令牌的步骤:
1)登录后,发送2个令牌(访问令牌,刷新令牌)作为对client的响应。
2)访问令牌的有效期将更少,而刷新将具有较长的到期时间。
3)客户端(前端)将刷新令牌存储在其本地存储中,并将访问令牌存储在cookie中。
4)客户端将使用访问令牌来调用api。但是,当它过期时,请从本地存储中选择刷新令牌,然后调用auth服务器api以获取新令牌。
5)您的身份验证服务器将公开一个api,它将接受刷新令牌并检查其有效性并返回新的访问令牌。
6)刷新令牌过期后,用户将注销。
如果您需要更多详细信息,请让我知道,我也可以共享代码(Java + Spring引导)。
对于您的问题:
队列1:这是另一个JWT,具有较少的索赔且到期时间较长。
队列2:它将不在数据库中。后端将不会存储在任何地方。他们将只使用私钥/公钥对令牌解密,并使用其到期时间对其进行验证。
Que3:是的,正确的
小智 21
1)在这种情况下,他们使用uid,而不是JWT.当他们刷新令牌时,他们会发送刷新令牌和用户.如果将其实现为JWT,则无需发送用户,因为它将在JWT内部.
2)他们在一个单独的文件(表格)中实现这一点.这对我来说很有意义,因为用户可以登录不同的客户端应用程序,并且可以通过应用程序获得刷新令牌.如果用户丢失了安装了一个应用程序的设备,则该设备的刷新令牌可能会失效,而不会影响其他已登录的设备.
3)在此实现中,它使用访问令牌和刷新令牌响应登录方法.它对我来说是正确的.
JWT 有两个问题:
糟糕的标准化
很难撤销(用于身份验证时)
第一个可以通过使用您自己的 JWT 实现来解决:将您想要的任何内容放入 JSON,使用 AES 对其进行加密 - 瞧 - 将其用于身份验证(如果需要,也可用于授权:将角色放入 JSON 中)。
超简约智威汤逊{"id" : "<id>"}
第二个问题需要澄清。对于存储在服务器端的常规会话,不存在撤销问题:服务器可以随时使会话失效。但常规会话在可扩展性和性能方面存在问题,因此出现了 JWT。
撤销问题的常见解决方案是使用刷新令牌。
具体方法如下:
| 归档时间: |
|
| 查看次数: |
57532 次 |
| 最近记录: |