我的用例需要设置一个私有docker注册表,能够对特定名称空间的用户进行身份验证,同时防止经过身份验证的用户将图像拉/推送到分配给其他名称空间的其他名称空间。 / p>
到目前为止,我的调查指出了一个包含以下模块的设置
这种设置是否可行?如何配置docker注册表以使用OAuth2服务器?我从官方文档中找到了以下资源:
https://docs.docker.com/registry/spec/auth/token/
在我的config.yml中,我添加了以下行:
this
位置auth:
token:
realm: http://localhost:8200/oauth/token
issuer: Auth Service
service: Docker Registry
rootcertbundle: /certs/server.crt
是我的QAuth2实现,它基于Spring OAuth2
当我尝试登录我的注册表时
http://localhost:8200/
似乎QAuth2的所有流程都没有后跟docker,我注意到它发送了一个GET(这是不允许的,但我有点破解它通过)请求,使用以下格式:
$> docker login -u admin -p admin https://localhost:5000
登录名和密码位于授权标题中,Oauth2服务器成功进行基本身份验证,但是它错过了grant_type,用户名,密码流密码等。
我做错了什么?
据我所知,密码流的正确OAuth2令牌请求具有以下形式:
/oauth/token?account=admin&client_id=docker&offline_token=true&service=Docker+Registry
(在Authorization标头中的地方是clien_id:client_secret,在我的案例中,在docker:docker中允许在base64中执行特定的密码流)
OAuth2和docker是否有任何工作示例?我找到了以下示例curl -X POST "localhost:8200/oauth/token" \
-d "username=admin&password=admin&grant_type=password&scope=read%20write&" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json" \
-H "Authorization: Basic ZG9ja2VyOmRvY2tlcg=="
,但这是一个基于docker documentation的自定义OAuth2类似JWT的实现(如果我错了,请更正)。