Keycloak 配置
首先切换Realm

配置用户和组
默认同步所有用户到harbor,包括未分配的组的用户
我们可以利用 Keycloak 中 Groups 的特性,指定组成员同步到Harbor视为管理员。
之前已经新建用户了 sundayhk

新建group: harbor 再进入harbor组 创建子group: admin

在子group: admin 加入用户,这里添加后续将同步为harbor管理员

新建 Client scopes 和 Mapper
默认情况下,组信息不会被带出,因此我们需要配置 Client scopes 和 Mapper 使得 Keycloak 可以在用户信息中体现用户组信息。
新建一个名为 groups 的 Client scope,考虑到不是所有 Client 都需要透出用户的所属组信息,所以这里配置为 Optional 类型。

在 Client scopes 点击 groups
然后新建一个 Group Membership 类型的 Mapper,透出用户所属组:

在Configure a new mapper选中 Group Membership


新建 Client : harbor 并关联 Client scope




关联刚才新建的 Client scope,类型可选择 Default,这样 Harbor 不需要显式指定。

harbor 配置
https://goharbor.io/docs/2.15.0/administration/configure-authentication/oidc-auth/

OIDC Endpoint: 注意realam
OIDC 客户标记: keycloak client
OIDC 客户端密码: keycloak client -> Credentials
OIDC 组过滤器: 空
组声明名称:groups
OIDC 管理员组: /harbor/admin
OIDC Scope: openid,offline_access
调试
Keycloak 用户信息
Client -> Client scopes -> Evaluate 中可以模拟登录回调后生成的用户信息。有助于我们检查用户信息字段映射的结果是否符合预期。

调试非预期可以查看日志
docker logs harbor-core -f
docker logs keycloak -f
验证

现在组/harbor/admin 登陆自动分配管理员权限,其他组或分配组登陆分配普通用户权限
同时也可以使用内置用户访问
https://harbor.sundayhk.com/account/sign-in

SundayHK