Проверка токена обновления в authlib

Я хочу проверить токены обновления, полученные ранее с сервера. Одна из возможностей — получить токен доступа с сервера, который неявно проверит используемый токен обновления. Но здесь сгенерированный токен доступа мне ни к чему. В качестве альтернативы я мог бы предоставить интерфейс (в «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)

Теоретически я мог бы получить этот объект гранта токена из фактического объекта авторизации (authlib/specs/rfc6749/authorization_server.py) через объект сервера авторизации фляги (flask/oauth2/authorization_server.py) в примере с сервером токенов, но, похоже, нет способа чтобы получить первый объект из второго. Есть ли более простой способ добиться того, что я хочу сделать?


person fturkmen    schedule 20.07.2018    source источник


Ответы (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():
...

Но, вероятно, есть лучший способ сделать это.

person fturkmen    schedule 20.07.2018