Client Credentials Flow используется, когда пользователь не участвует в процессе. В этом сценарии серверное приложение получает access_token от имени самого приложения и затем обращается к API как доверенный клиент.
Этот flow подходит только для confidential-клиентов, у которых есть client_secret. Не используйте его в браузере, SPA, мобильном приложении или любом месте, где секрет может увидеть пользователь.
Получите client_id и client_secret, убедитесь, что для клиента разрешен grant type client_credentials, и заранее согласуйте набор доступных scope. Сервис выдаст токен только с разрешениями, которые назначены клиенту.
Запрос отправляется методом POST в формате application/x-www-form-urlencoded.
curl -X POST https://auth.regos.uz/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=your_client_id" \
-d "client_secret=your_client_secret"
Успешный ответ содержит только access_token. В этом сценарии нет пользователя, поэтому REGOS не выдает id_token и refresh_token.
{
"access_token": "eyJ...access_token",
"token_type": "Bearer",
"expires_in": 600,
"scope": "allowed.scope another.scope"
}
Используйте expires_in из ответа, чтобы понять, когда нужно запросить новый токен. Когда токен истек, повторите тот же запрос с client_id и client_secret.
Передавайте токен в API в заголовке:
Authorization: Bearer eyJ...access_token
Такой токен не подходит для /oauth/userinfo, потому что он не связан с конкретным пользователем. Если вам нужен профиль пользователя, используйте Authorization Code Flow.