Я пытаюсь написать собственный ресурс Concourse (на Python), который обращается к REST API экземпляра Concourse для получения информации. Я застрял в получении токена на предъявителя при входе в систему. Проблема в том, что когда я следую сути этого сценария оболочки
#!/bin/bash
## Variables required #need to update these to take inputs for getting token per team and target.
CONCOURSE_URL="http://localhost:8080"
CONCOURSE_USER="test"
CONCOURSE_PASSWORD="test"
CONCOURSE_TEAM="test"
CONCOURSE_TARGET="my-concourse"
function get_token() {
## Create a file named token that will be used to read and write tokens
touch token
## extract the LDAP authentication url and write to token file
LOCAL_AUTH_URL=$CONCOURSE_URL$(curl -b token -c token -L "$CONCOURSE_URL/sky/login" -s | grep "/sky/issuer/auth/local" | awk -F'"' '{print $4}')
echo "url is $LOCAL_AUTH_URL"
# login using username and password while writing to the token file
curl -s -o /dev/null -b token -c token -L --data-urlencode "login=$CONCOURSE_USER" --data-urlencode "password=$CONCOURSE_PASSWORD" "$LOCAL_AUTH_URL"
ATC_BEARER_TOKEN=`grep 'Bearer' token | cut -d\ -f2 | sed 's/"$//'`
echo $ATC_BEARER_TOKEN
}
задействовано много перенаправлений, и по крайней мере некоторые из них ссылаются на экземпляр concourse как на http://localhost:8080, который не работает из док-контейнера ресурса.
Поэтому я хотел параметризовать внешний базовый URL-адрес и явно указать его в конфигурации ресурса. Ручная обработка перенаправлений и перезапись локального IP-адреса в URL-адрес завершается неудачно на последнем этапе «утверждения» с кодом 400, вероятно, потому, что это похоже на какую-то междоменную атаку.
Переменная окружения ATC_EXTERNAL_URL всегда является localhost: 8080, и я подозреваю, что она также используется при формировании URL-адресов перенаправления. Это можно где-нибудь установить?
Я плохо разбираюсь в голанге, но мне кажется, что https://github.com/concourse/concourse-pipeline-resource вызывает двоичный файл fly для выполнения какого-либо входа в систему изнутри ресурса. Не могу сказать, что могу понять, что он делает и как.
Любая помощь приветствуется ...