Руководство по аутентификации
Данное руководство описывает способы взаимодействия с GoodBridge Auth Server для получения и обновления токенов аутентификации.
1. Получение Access Token
Чтобы получить новый access_token и refresh_token, используйте тип гранта client_credentials.
Эндпоинт: POST /oauth/token
Тело запроса:
{
"grant_type": "client_credentials",
"client_id": "your-client-id",
"client_secret": "your-client-secret"
}
Успешный ответ:
access_token(string): Токен, используемый для авторизации запросов к защищенным сервисам.refresh_token(string): Токен, используемый для получения нового access token, когда текущий истечет.access_expires_at(datetime): Время истечения access token (ISO 8601).refresh_expires_at(datetime): Время истечения refresh token (ISO 8601).token_type(string): Обычно “bearer”.
2. Обновление Access Token
Когда срок действия access_token истекает, вы можете использовать refresh_token для получения новой пары токенов без повторной аутентификации с помощью клиентских учетных данных.
Эндпоинт: POST /oauth/token
Тело запроса:
{
"grant_type": "refresh",
"refresh_token": "your-refresh-token"
}
Успешный ответ:
Структура ответа такая же, как и при первом получении токенов.
3. Использование Access Token
Включите access_token в заголовок Authorization ваших HTTP-запросов к защищенным микросервисам:
Authorization: Bearer <access_token>
4. Отзыв токена
Если вам необходимо вручную аннулировать токен (например, при выходе из системы), используйте эндпоинт /oauth/revoke.
Эндпоинт: DELETE /oauth/revoke
Параметры запроса (query):
token(string): Токен, который вы хотите отозвать.token_type_hint(string): Тип токена, либоaccess, либоrefresh.
Пример:
DELETE /oauth/revoke?token=<your_token>&token_type_hint=access
5. Интроспекция токена
Чтобы проверить, действителен ли токен, и получить его метаданные, используйте эндпоинт /oauth/introspect.
Эндпоинт: GET /oauth/introspect
Параметры запроса (query):
access_token(string): Токен для проверки.
Пример:
GET /oauth/introspect?access_token=<your_access_token>
Ответ:
{
"is_active": true,
"client_id": "your-client-id",
"expires_at": 1711814040.0
}