harbor镜像仓库同步401问题解决过程

       项目中出现同步镜像时报401错误,首先想到的就是确认账号是否真的没有权限,然后通过docker login 命令使用该账号登录镜像仓库,也是报了401错误。现象很明确,就是客户端没有访问镜像仓库的权限,那么为啥会出现这种问题呢?

       猜想要么就是该账号确实没权限,要么就是获取到的token在镜像仓库服务端校验的时候失败了。镜像同步是通过访问镜像仓库的原生API进行的,在同步时镜像仓库服务端一样需要token认证来检查客户端是否有权限上传镜像,下面就一一验证这两种情况:

       先说明一下,我们项目中,镜像仓库服务与镜像仓库的token服务器分别部署在不同的机器上。对于第一种情况,验证很简单,换一个管理员账号即可,harbor镜像仓库的管理员账号是有全部镜像操作的权限的,如果管理员账号可以,那说明就是之前绑定的账号确实没权限,如果管理员账号也不行,那就说明是第二种情况了。通过docker login命令使用管理员账号登录镜像仓库,还是报了401错误,说明确实是token验证有问题,而不是账号的问题。那token验证为什么会出错呢?

       先来复习一下客户端访问镜像仓库获取token的原理。

  1. 客户端向镜像仓库发送请求
  2. 镜像仓库发现自己配置了权限认证服务,则返回401状态,并携带获取认证token的服务地址以及客户端访问所需要的权限
  3. 客户端收到镜像仓库的响应后发现要先获取token才能访问镜像仓库,则携带用户名和密码访问获取token的地址
  4. 权限认证服务器校验用户名和密码后,按照客户端需要的权限,返回一个JWT标准的token
  5. 客户端携带获取的token再次访问镜像仓库
  6. 镜像仓库验证客户端携带
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值