profcomff / profcomff/webapp-ui

Поддержать обновление токена с включенным OIDC

Open
#313 2 comments 0 reactions 2 assignees View on GitHub

Nobody has claimed this yet.

good first issue :baby: new feature :new:
Dominant language
Vue
Stars
15
Forks
2
Avg merge
3m
Merged PRs (30d)
8

Description

Когда включен OIDC в Auth API (сейчас включен на тесте) – токен не продлевается автоматически. Его надо продлевать вручную с помощью ручки /openid/token.

По идее токена должно выписываться два:

  • access_token с временем жизни минут 15
  • refresh_token с временем жизни в недели и месяцы

С access_token так же приходит expires_in (в секундах, а в старых ручках expires в виде даты). Токен надо обновлять не реже, чем пройдет это время.

Вариант решения:

  1. При открытии вкладки с приложением всегда делаем запрос на /openid/token (если пользователь уже логинился, у него должны быть сохранены refresh_token или token) для замены токена с параметрами ?grant_type=refresh_token& client_id=app&refresh_token={{token}}. {{token}} заменять на refresh_token, а если его нет, то на token

  2. Из полученного JSON запоминать параметры token=access_token, refresh_token=refresh_token

    Из старых ручек запоминать token=access_token or token, refresh_token=refresh_token or token. Но вообще потом там тоже будут оба токена приходить

    expires/expires_in тоже запоминать в формате даты/юникс таймстемпа

  3. Если делаешь API запрос, предварительно проверить, что expires < сейчас. Если такое произошло, сначала делаем шаг 1

Я бы это делал на уровне auth-lib

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.