pkg/authorizer/util.go (33 lines of code) (raw):
package authorizer
import (
"encoding/base64"
"encoding/json"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
)
const (
acrUsername = "00000000-0000-0000-0000-000000000000"
)
type dockercfg struct {
Auths map[string]auth `json:"auths"`
}
type auth struct {
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
Auth string `json:"auth"`
}
// CreateACRDockerCfg creates an ACR docker config using given access token.
func CreateACRDockerCfg(acrFQDN string, accessToken azcore.AccessToken) (string, error) {
cfg := dockercfg{
Auths: map[string]auth{
acrFQDN: {
Username: acrUsername,
Password: accessToken.Token,
Email: "msi-acrpull@azurecr.io",
Auth: base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", acrUsername, accessToken.Token))),
},
},
}
encoded, err := json.Marshal(cfg)
return string(encoded), err
}