1. Oauth2s/

从0开始构建一个Oauth2Server服务 23

·28 字·1 分钟· loading
Oauth2 Oauth2 HTTP
demo007x
作者
demo007x

从0开始构建一个Oauth2Server服务 23
#

撤销授权 revoking access
#

出于多种原因,您可能需要撤销应用程序对用户帐户的访问权限。

  • 用户明确希望撤销应用程序的访问权限,例如,如果他们发现他们不想再使用的应用程序列在他们的 授权页面上
  • 开发人员想要撤销其应用程序的所有用户令牌
  • 开发人员 删除了他们的应用程序
  • 作为服务提供商,您已确定某个应用程序受到威胁或存在恶意,并希望将其禁用

根据您实现生成访问令牌的方式,撤销它们将以不同的方式工作。

令牌数据库
#

如果将访问令牌存储在数据库中,那么撤销属于特定用户的所有令牌就相对容易了。您可以轻松编写查询来查找和删除属于用户的令牌,例如在令牌表中查找他们的user_id. 假设您的 资源服务器通过在数据库中查找访问令牌来验证访问令牌,那么下次被撤销的客户端发出请求时,他们的令牌将无法验证。

jwt令牌
#

如果你有一个真正无状态的令牌验证机制,并且你的资源服务器在不与另一个系统共享信息的情况下验证令牌,那么唯一的选择就是等待所有未完成的令牌过期,并阻止应用程序生成新令牌通过阻止来自该客户端 ID 的任何刷新令牌请求来针对该用户。这是使用自编码令牌时使用极短寿命令牌的主要原因。

如果你能负担得起某种程度的状态,你可以将令牌标识符的撤销列表推送到你的资源服务器,并且你的资源服务器可以在验证令牌时检查该列表。访问令牌可以包含一个唯一的 ID(例如声明jti),可用于跟踪各个令牌。如果你想撤销一个特定的令牌,你需要把那个令牌jti放到一个列表中,某个地方可以被你的资源服务器检查。当然,这意味着您的资源服务器不再进行纯粹的无状态检查,因此这可能不是适用于所有情况的选项。

您还需要使与访问令牌一起颁发的应用程序的刷新令牌无效。撤销刷新令牌意味着应用程序下次尝试刷新访问令牌时,将拒绝对新访问令牌的请求。

Related

从0开始构建一个Oauth2Server服务 22
Oauth2 Oauth2 HTTP
展现用户授权的应用一旦用户开始授权多个应用程序,允许许多应用程序访问他们的帐户,就有必要提供一种方法来允许用户管理具有访问权限的应用
从0开始构建一个Oauth2Server服务 21
Oauth2 Oauth2 HTTP
刷新令牌 Refreshing-access-tokens如何让您的开发人员使用刷新令牌来获取新的访问令牌。如果您的服务随访问令牌一
从0开始构建一个Oauth2Server服务 20
Oauth2 Oauth2 HTTP
Access Token 访问令牌当您的服务发出访问令牌时,您需要就您希望令牌持续多长时间做出一些决定。不幸的是,没有针对每项服务的