Litminka / LitminkaSite

2 stars 0 forks source link

Добавить страницы авторизации и регистрации #4

Open Thenk0 opened 7 months ago

TheaseMeanse commented 3 months ago

По кейклоаку есть несколько эндпоинтов в процессе аутентификации:

  1. Получение кода получения токена: https://auth.litminka.ru/realms/{realmName}/protocol/openid-connect/auth С квери параметрами:

    • response_type=code
    • scope=openid (через пробел можно добавить доп. скоупы, берутся из настроек кейклоака)
    • client_id={client_id} (также зависи от настроек кейклоака, надо брать из .env, как и client_secret)
    • redirect_uri=https://litminka.ru
  2. После генерации кода авторизации будет перенаправление на redirect_uri с квери параметрами:

    • session_state
    • iss
    • code
    • state (опционально, если был задан в запросе auth. Вообще стоит почитать спецификацию openid, там очень много опциональных параметров, которые, возможно, стоит задействовать)
  3. Отправить POST https://auth.litminka.ru/realms/{realmName}/protocol/openid-connect/token с формой:

    • grant_type=authorization_code
    • code={code from query}
    • redirect_uri={same redirect_uri}

А также заголовком авторизации Basic base64({client_id}:{client_secret})

Результатом запроса будет 3 токена (refresh, access и id)

Для обновления токена отправляем POST https://auth.litminka.ru/realms/{realmName}/protocol/openid-connect/token с формой grant_type=refresh_token&client_id={client_id} и заголовком Bearer {refreshToken}

По настройкам локального инстанса кейклоака для тестов покажу отдельно что-куда тыкать