Авторизация и токен

Переменные окружения, curl, срок действия токена.

Здесь описано, как получить токен доступа и передавать его в запросах к Shturval Backend API (basePath /api/v1 в OpenAPI). В интерактивной спецификации схема Bearer объявлена в securityDefinitions: токен передаётся в заголовке Authorization.


Подготовка переменных

export SH_USERNAME="admin"
export SH_PASS="my-password"
export CLUSTERNAME=my-cluster
export INGRESS="$CLUSTERNAME.ip-x-x-x-x.shturval.link"
export AUTHENDPOINT="https://shturval.$INGRESS/authn"
export BACKENDPOINT="https://shturval.$INGRESS"
export CLIENT_SECRET="clientsecret"
export COOKIE_PATH=/tmp/cookie

Совет: CLIENT_SECRET — значение client_secret из Secret backend-* в неймспейсе shturval-backend. При отсутствии доступа запросите у администратора.

BACKENDPOINT — базовый URL, к которому добавляется путь API, например $BACKENDPOINT/api/v1/clusters.


Получение токена

Доступ к API выполняется по токену (access token). Токен получается через OAuth-flow внутреннего или внешнего (OIDC) провайдера аутентификации.

# Аутентификация
curl -k -v -s $AUTHENDPOINT/login -c $COOKIE_PATH \
  --data-urlencode "username=$SH_USERNAME" \
  --data-urlencode "password=$SH_PASS" &>/dev/null

# Получение кода авторизации
code=$(curl -k -b $COOKIE_PATH -v "$AUTHENDPOINT/oauth/authorize?response_type=code&client_id=backend&expired=48h&redirect_uri=localhost/cb" 2>&1 | grep -E -o "\<code=[A-Z0-9]+")

# Получение access token
token=$(curl -k -s "$AUTHENDPOINT/oauth/token" \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  -b $COOKIE_PATH \
  --data-urlencode 'client_id=backend' \
  --data-urlencode "client_secret=$CLIENT_SECRET" \
  --data-urlencode 'grant_type=authorization_code' \
  --data-urlencode "$code" \
  --data-urlencode "redirect_uri=localhost/cb" | jq -r '.access_token')

Использование токена

Все запросы к API выполняются с заголовком:

Authorization: Bearer <token>

Помимо токена для вызова обычно требуются соответствующие разрешения (см. описание операций в Swagger).


Срок действия токена

По умолчанию токен действует 24 часа. Для увеличения срока (например, до 48 часов) при запросе кода авторизации добавьте параметр expired=48h:

$AUTHENDPOINT/oauth/authorize?response_type=code&client_id=backend&expired=48h&redirect_uri=localhost/cb

Подробнее о настройке времени жизни токена — в разделе Время жизни токена.


Дополнительные материалы