Создать токен авторизации для доступа к CR в Java
Я выполняю проверку подлинности в Azure с использованием субъекта службы и хочу преобразовать сценарий оболочки в Java. Мой код сценария оболочки по существу делает это:
export AAD_ACCESS_TOKEN=$(az account get-access-token --query accessToken -o tsv)
export ACR_REFRESH_TOKEN=$(curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=access_token&service=$REGISTRY&access_token=$AAD_ACCESS_TOKEN" \
https://$REGISTRY/oauth2/exchange \
| jq '.refresh_token' \
| sed -e 's/^"//' -e 's/"$//')
echo "ACR Refresh Token obtained."
# Create the repo level scope
SCOPE="repository:$REPOSITORY:pull"
# to pull multiple repositories passing in multiple scope arguments.
#&scope="repository:repo:pull,push"
export ACR_ACCESS_TOKEN=$(curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token&service=$REGISTRY&scope=$SCOPE&refresh_token=$ACR_REFRESH_TOKEN" \
https://$REGISTRY/oauth2/token \
| jq '.access_token' \
| sed -e 's/^"//' -e 's/"$//')
echo "ACR Access Token obtained."
Я пытаюсь найти эквиваленты Java для
az account get-access-token --query accessToken -o tsv
а также
curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=access_token&service=$REGISTRY&access_token=$AAD_ACCESS_TOKEN" https://$REGISTRY/oauth2/exchange | jq '.refresh_token' | sed -e 's/^"//' -e 's/"$//'
а также
curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=refresh_token&service=$REGISTRY&scope=$SCOPE&refresh_token=$ACR_REFRESH_TOKEN" https://$REGISTRY/oauth2/token | jq '.access_token' | sed -e 's/^"//' -e 's/"$//'
но на самом деле не нашел никакой документации о том, как сделать это с помощью Java. Я нашел это: https://github.com/AzureAD/azure-activedirectory-library-for-java/wiki/Acquire-tokens для получения токенов AAD, но ничто на этой странице не говорит мне, как это сделать с помощью субъекта службы.
1 ответ
Вам нужно реализовать эти завитки в Java, вы можете использовать Restclient, как https://github.com/square/okhttp/blob/master/README.md