作为 OIDC 身份提供者
OpenID Connect 是一种基于 OAuth 2.0 规范框架(IETF RFC 6749 和 6750)的可互操作的身份验证协议。KubeSphere v4.1.3 实现了 OpenID Connect 协议中的授权码认证流程 Authorization Code Flow,用于扩展组件向上对接 KubeSphere 的账户系统。本教程使用 Harbor 作为 OIDC 客户端,配置完成后将使用 KubeSphere 账户登录 Harbor。
基于 OIDC 实现 SSO 的基本流程
终端用户通过浏览器访问网站或网络应用。
终端用户点击登录并输入用户名和密码。
依赖方(客户端)向 OpenID 提供商(OP)发送请求。
OpenID 提供商验证用户身份并获取授权。
OpenID 提供商返回身份令牌(Identity Token),通常会同时返回访问令牌(Access Token)。
依赖方可使用该访问令牌向用户设备发送请求。
用户信息端点(UserInfo Endpoint)将返回终端用户的相关身份声明信息(Claims)。
部署 KubeSphere 4.1.3
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.4.tgz --debug --wait \
--set portal.hostname=172.31.17.16.nip.io \
--set portal.https.port=30491 \
--set ingress.enabled=true \
--set ingress.tls.enabled=true \
--set ingress.ingressClassName=kubesphere-router-cluster
说明 |
---|
应用配置前需要预先将 ks-console 以 https 方式暴露。此教程中,使用 ingress 方式暴露 ks-console。使用 KubeSphere 网关扩展组件创建集群网关,对应的 IngressClass 为 |
参数 | 说明 |
---|---|
| 用于访问 KubeSphere Console 的域名或 IP(需替换为实际的节点 IP 地址) |
| 用于访问 KubeSphere Console 的端口 |
| Ingress、TLS 配置 |
| Ingress 对应的 IngressClass(需要使用已有的 IngressClass) |
新建 OAuth Client
cat << EOF | kubectl apply -f -
apiVersion: v1
stringData:
configuration.yaml: |
name: harbor
secret: password123
grantMethod: auto
scopeRestrictions:
- 'openid'
- 'email'
- 'profile'
redirectURIs:
- https://harbor.172.31.19.17.nip.io/c/oidc/callback
kind: Secret
metadata:
name: oauthclient-harbor
namespace: kubesphere-system
labels:
config.kubesphere.io/type: oauthclient
type: config.kubesphere.io/oauthclient
EOF
参数 | 说明 |
---|---|
| OAuth Client 的 ID |
| OAuth Client 的 Secret |
| OAuth Client 支持的回调 URL 列表 |
OIDC 配置参考
以 Harbor 对接 OIDC 为例
使用 OIDC 方式登录 Harbor
登录 KubeSphere Console
首次登录,关联 Harbor 账号
反馈
这篇文章对您有帮助吗?
通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。