【问题标题】:Validation of Refresh Token in authlib验证 authlib 中的刷新令牌
【发布时间】:2018-07-20 23:16:37
【问题描述】:

我想验证我之前从服务器获得的刷新令牌。一种可能性是从服务器获取访问令牌,这将隐式验证使用的刷新令牌。但是这里生成的访问令牌对我没有用。或者,我可以公开一个接口(在示例令牌服务器的“routes.py”中),用于通过函数验证给定的刷新令牌:

RefreshTokenGrant.authenticate_refresh_token(ref_token) 

如果我正确理解了流程,我需要获取 RefreshTokenGrant 对象来执行这个在“authorization_server.py”中实例化的函数:

for grant_cls in self._token_grants:
        if grant_cls.check_token_endpoint(request):
            if request.method in grant_cls.TOKEN_ENDPOINT_HTTP_METHODS:
                return grant_cls(request, self)

理论上,我可以通过令牌服务器示例中的烧瓶授权服务器对象 (flask/oauth2/authorization_server.py) 从实际授权对象 (authlib/specs/rfc6749/authorization_server.py) 获取此令牌授予对象,但似乎存在是没有办法从后者得到前者的对象。有没有更简单的方法来实现我想做的事情?

【问题讨论】:

    标签: oauth-2.0 refresh-token authlib


    【解决方案1】:

    这比我想象的要容易。我刚刚在令牌服务器示例中使用了 RefreshTokenGrant 类中的代码,并确保包含 OAuth2Token 对象:

    item = OAuth2Token.query.filter_by(refresh_token=request.form.get('refresh_token')).first()
    if item and not item.is_refresh_token_expired():
    ...
    

    但可能有更好的方法来做到这一点..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 2020-07-07
      • 2021-04-26
      • 2020-08-19
      • 2019-02-27
      • 2016-07-02
      • 2018-05-27
      • 1970-01-01
      相关资源
      最近更新 更多