Как работает OIDC¶
Как работает OIDC SSO на примере gitlab:
Весь смысл получить access_token и авторизоваться - это альтернатива логину\паролю.
Плюсы: - токен короткоживущий и можно отозвать - креды не хранятся на стороне gitlab, и могут и на стороне keycloak тоже не хранится если настроена например ldap federation - безопасность выше - SSO
Есть несколько вариантов подключения в curl можно задать через --data-urlencode "grant_type=password" (code, secretid)
-
вариант с authcode(самый безопасный)
- Пользователь переходит на страницу gitlab говорит Login with SSO
- Происходит редиректит на keycloak
- Вводим логин и пароль в keycloak
- редирект на тот callback который был указан в clients keycloak: gitlab и генерируется AUTHCODE
- чтобы получить токены и авторизовать нужно обменять код аутентификации authcode
- отправляется POST запрос на keycloak c authcode
- в ответ приходит access token, id token(jwt) , refresh token
-
вариант с 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)