Настройка OAUTH2 для авторизации в Trino
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=etc/keystore.jks
http-server.https.keystore.key=changeit
http-server.authentication.type=OAUTH2,PASSWORD
http-server.authentication.oauth2.issuer=https://isso-dev.company.com/auth/realms/rl
http-server.authentication.oauth2.client-id=trino-test
http-server.authentication.oauth2.client-secret=iddqd
http-server.authentication.oauth2.scopes=openid,profile,email
http-server.authentication.oauth2.audience=trino-test
http-server.authentication.oauth2.user-mapping.pattern=(.*)
http-server.authentication.oauth2.principal-field=preferred_username
Подключение к Trino с OAUTH2
JDBC
Необходимо установить externalAuthentication свойство в true. После этого в том же бобре можно просто скипнуть ввод логина и пароля. Откроется бразуер.
CLI
Добавляем ключ --external-authentication.
./trino-cli-477 --server https://localhost:8443 --insecure --external-authentication --user maksimПолучение токена и авторизация с ним
CLIENT_ID="trino-test"
CLIENT_SECRET="A2pFdsyKpxwhgX79WGSsXBmjraTLYTZd"
ISSUER_URL="https://isso-dev.company.com/auth/realms/rl"
REDIRECT_URI="https://localhost:8443/callback"
TRINO_URL="https://localhost:8443"
STATE=$(openssl rand -hex 16)
AUTH_URL="${ISSUER_URL}/protocol/openid-connect/auth?response_type=code&client_id=${CLIENT_ID}&redirect_uri=${REDIRECT_URI}&scope=openid%20profile%20email&state=${STATE}"
echo "1. Откройте этот URL в браузере и авторизуйтесь:"
echo "$AUTH_URL"
echo ""
echo "2. После авторизации вы будете перенаправлены на localhost:8080/callback"
echo "3. Скопируйте параметр 'code' из URL"
echo "4. Введите код авторизации:"
read -p "Authorization code: " AUTH_CODE
if [ -z "$AUTH_CODE" ]; then
echo "Код авторизации не введен. Выход."
exit 1
fi
echo ""
echo "Обмениваем код на токен..."
# Обмениваем код на токен
TOKEN_RESPONSE=$(curl -s -X POST \
"${ISSUER_URL}/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "client_id=${CLIENT_ID}" \
-d "client_secret=${CLIENT_SECRET}" \
-d "code=${AUTH_CODE}" \
-d "redirect_uri=${REDIRECT_URI}")
# Извлекаем токены из ответа
ACCESS_TOKEN=$(echo $TOKEN_RESPONSE | jq -r '.access_token')
REFRESH_TOKEN=$(echo $TOKEN_RESPONSE | jq -r '.refresh_token')
echo "export TRINO_ACCESS_TOKEN=\"$ACCESS_TOKEN\""
echo "trino --server $TRINO_URL --access-token \$TRINO_ACCESS_TOKEN"