生成用于访问Java中的CR的身份验证令牌

时间:2019-08-01 22:26:56

标签: java azure azure-active-directory azure-acr

我正在使用服务主体针对Azure进行身份验证,我想将Shell脚本转换为Java。我的shell脚本代码基本上是这样做的:

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 个答案:

答案 0 :(得分:0)

您需要在Java中实现此curl,可以使用https://github.com/square/okhttp/blob/master/README.md之类的restclient