Skip to content

Commit

Permalink
feat: 支持Native Auth的Basic认证
Browse files Browse the repository at this point in the history
  • Loading branch information
sampsonye committed Sep 8, 2022
1 parent ef0e48a commit 3e51c02
Showing 1 changed file with 19 additions and 13 deletions.
32 changes: 19 additions & 13 deletions internal/core/settings/registryhub.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,29 @@ func TryLoginRegistry(basicUrl, username, password string, insecure bool) error
if resp.StatusCode != 401 {
return errors.New(fmt.Sprintf("%s不支持V2版本访问", url))
}
//get Auth Info
auth := resp.Header.Get("Www-Authenticate")
if !strings.HasPrefix(auth, "Bearer") {
return errors.New("basicUrl is incorrect")
}
//Bearer realm="https://dockerauth.cn-hangzhou.aliyuncs.com/auth",service="registry.aliyuncs.com:cn-hangzhou:26842"
kvArr := strings.Split(strings.TrimPrefix(auth, "Bearer "), ",")

var authBaseUrl, authFullUrl string
var queryParams []string
for _, i2 := range kvArr {
temp := strings.Split(i2, "=")
if strings.HasPrefix(i2, "realm") {
authBaseUrl = strings.Trim(temp[1], "\"")
} else {
queryParams = append(queryParams, temp[0]+"="+strings.Trim(temp[1], "\""))

//get Auth Info
auth := resp.Header.Get("Www-Authenticate")
if strings.HasPrefix(auth, "Basic") {
authBaseUrl = url
queryParams = nil
} else if strings.HasPrefix(auth, "Bearer") {
//Bearer realm="https://dockerauth.cn-hangzhou.aliyuncs.com/auth",service="registry.aliyuncs.com:cn-hangzhou:26842"
kvArr := strings.Split(strings.TrimPrefix(auth, "Bearer "), ",")

for _, i2 := range kvArr {
temp := strings.Split(i2, "=")
if strings.HasPrefix(i2, "realm") {
authBaseUrl = strings.Trim(temp[1], "\"")
} else {
queryParams = append(queryParams, temp[0]+"="+strings.Trim(temp[1], "\""))
}
}
} else {
return errors.New("basicUrl is incorrect")
}
if len(queryParams) > 0 {
authFullUrl = authBaseUrl + "?" + strings.Join(queryParams, "&")
Expand Down

0 comments on commit 3e51c02

Please sign in to comment.