Skip to content

Как работает OIDC

Как работает OIDC SSO на примере gitlab: My Diagram

Весь смысл получить access_token и авторизоваться - это альтернатива логину\паролю.

Плюсы: - токен короткоживущий и можно отозвать - креды не хранятся на стороне gitlab, и могут и на стороне keycloak тоже не хранится если настроена например ldap federation - безопасность выше - SSO

Есть несколько вариантов подключения в curl можно задать через --data-urlencode "grant_type=password" (code, secretid)

  1. вариант с authcode(самый безопасный)

    • Пользователь переходит на страницу gitlab говорит Login with SSO
    • Происходит редиректит на keycloak
    • Вводим логин и пароль в keycloak
    • редирект на тот callback который был указан в clients keycloak: gitlab и генерируется AUTHCODE
    • чтобы получить токены и авторизовать нужно обменять код аутентификации authcode
    • отправляется POST запрос на keycloak c authcode
    • в ответ приходит access token, id token(jwt) , refresh token
  2. вариант с login pass

    curl -X "POST" "https://hostkeycloak.ru/realms/truedev/protocol/openid-connect/token" \
         -H 'Content-Type: application/x-www-form-urlencoded' \
         -H 'Accept: application/json' \
         --data-urlencode "grant_type=password" \
         --data-urlencode "client_id=grafana" \
         --data-urlencode "client_secret=WU........5" \
         --data-urlencode "scope=openid" \
         --data-urlencode "username=devuser" \
         --data-urlencode "password=....."
    в ответ получим сразу токены: access token, refresh token, id token(jwt)