我想验证我先前从服务器获得的刷新令牌。一种可能性是从服务器获取访问令牌,该访问令牌将隐式验证使用的刷新令牌。但是这里生成的访问令牌对我没有用。另外,我可以通过以下函数公开一个接口(在示例令牌服务器的“ 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授权服务器对象(flask / oauth2 / authorization_server.py)从实际授权对象(authlib / specs / rfc6749 / authorization_server.py)中获取此令牌授予对象,但似乎在那里无法从后者获取前一个对象。有没有更简单的方法可以实现我想做的事?
答案 0 :(得分:0)
这比我想的要容易。我只是在令牌服务器示例中使用了RefreshTokenGrant类中的代码,并确保包括OAuth2Token对象:
item = OAuth2Token.query.filter_by(refresh_token=request.form.get('refresh_token')).first()
if item and not item.is_refresh_token_expired():
...
但是可能有更好的方法来做到这一点。