赞
踩
1、启动keycloak
开始之前,确保已经安装Docker。
从终端开启 keycloak,命令如下:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.0 start-dev
2、应用示例
(1)登录管理控制台
去Keycloak管理控制台并使用之前创建的用户名和密码登录。登录后界面如下:
3,创建一个realm
在 keycloak 中,一个 realm 相当于一个租户。它允许创建独立的应用程序和用户组。master 是keycloak 中默认的 realm,master 是专用于管理 keycloak的,不建议用于自己的应用程序。要应用于自己的应用程序时,一般建立一个指定名称的 realm。创建 realm 的步骤如下:
3.1、打开Keycloak管理控制台。
3.2、将鼠标移到左上角标有 Master 的下拉框处,在下拉处可以看到 Add realm 按钮,点击该按钮,可以看到如下界面:
3、在右侧 Add realm 界面的 Name 处填写自己相应建立的 realm 的名称,例如: myrealm。
4、点击 Create 按钮创建。
创建一个user
在新创建的 realm 中没有用户,需要先创建一个,创建步骤如下:
1、打开Keycloak管理控制台。
2、点击左侧菜单中的 Users,在弹出的右侧面板中点击 Add user,如下图:
在 Add user 面板中,填写类似如下的示例信息:
Username:myuser
First Name:my
Last Name:user
4、点击 Save 按钮。
5、保存成功后,设置初始密码,操作如下:
1、在出现界面点击 Credentials,出现如下界面。
2、设置密码,设置完后,Temporary 处点击为 OFF。
3、点击 Set Password 按钮完成密码设置。
(4)配置第一个示例应用程序
现在尝试配置第一个应用程序。 第一步是用你的 Keycloak 实例注册一个应用程序,如下:
1、打开Keycloak管理控制台。
2、点击左侧的 Clients,在右侧的弹出界面点击 Create 按钮,得到 Add Client 界面。
3、在 Add Client 界面填写相关信息,示例如下:
Client ID:myclient
Client Protocol: openid-connect
Root URL:Test application - Keycloak
4、点击 Save 按钮。
添加域 名字叫istio
访问keycloak添加客户端
配置客户端
获取客户端的凭据,后面要用
创建mappers
6,创建nginx应用k8s deployment和ingress, nginx-ingress部署请看这个文章:如何在本地k8s 1.27中设置 nginx-ingress 局域网入口访问网址_ingress-nginx loadbalancer-CSDN博客
6.1 应用的 deployment yaml
apiVersion: v1 kind: Endpoints metadata: name: proxy-ingress subsets: - addresses: - ip: 192.168.2.96 ports: - port: 80 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: myapp namespace: default spec: selector: app: myapp release: canary ports: - name: http targetPort: 80 port: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: myapp-backend-pod namespace: default spec: replicas: 1 selector: matchLabels: app: myapp release: canary template: metadata: labels: app: myapp release: canary spec: containers: - name: myapp image: registry.cn-hangzhou.aliyuncs.com/luyanjiegerouth/nginx:alpine ports: - name: http containerPort: 80
6.2 创建应用ingress yaml
- apiVersion: networking.k8s.io/v1
- kind: Ingress
- metadata:
- name: ingress-myapp
- annotations:
- nginx.ingress.kubernetes.io/auth-signin: http://$host/oauth2/start?rd=$escaped_request_uri
- nginx.ingress.kubernetes.io/auth-url: http://$host/oauth2/auth
- nginx.ingress.kubernetes.io/proxy-buffer-size: 512k
- spec:
- ingressClassName: "nginx"
- rules:
- - host: "myapp.magedu.com"
- http:
- paths:
- - pathType: Prefix
- path: "/"
- backend:
- service:
- name: myapp
- port:
- number: 80
7,创建oauth2-proxy的deployment和ingress yaml
- apiVersion: v1
- kind: Service
- metadata:
- labels:
- app: oauth-proxy
- name: oauth-proxy
- namespace: oauth2-proxy
- spec:
- type: ClusterIP
- selector:
- app: oauth-proxy
- ports:
- - name: http-oauthproxy
- port: 4180
- ---
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- labels:
- app: oauth-proxy
- name: oauth-proxy
- namespace: oauth2-proxy
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: "oauth-proxy"
- template:
- metadata:
- labels:
- app: oauth-proxy
- spec:
- volumes:
- - name: oauth2-proxy-config
- configMap:
- name: oauth2-proxy-config
- containers:
- - name: oauth-proxy
- image: "quay.io/oauth2-proxy/oauth2-proxy:latest"
- ports:
- - containerPort: 4180
- volumeMounts:
- - name: oauth2-proxy-config
- mountPath: /etc/oauth2-proxy.cfg
- subPath: oauth2-proxy.cfg
- args:
- - --config=/etc/oauth2-proxy.cfg
- ---
- apiVersion: networking.k8s.io/v1
- kind: Ingress
- metadata:
- name: oauth2-proxy
- namespace: oauth2-proxy
- spec:
- ingressClassName: nginx
- rules:
- - host: myapp.magedu.com
- http:
- paths:
- - backend:
- service:
- name: oauth-proxy
- port:
- number: 4180
- path: /oauth2
- pathType: Prefix
- ---
- apiVersion: v1
- data:
- oauth2-proxy.cfg: |-
- # Provider config
- provider="keycloak"
- provider_display_name="Keycloak"
- login_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/auth"
- redeem_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/token"
- validate_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/userinfo"
- profile_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/userinfo"
- ssl_insecure_skip_verify=true
- # Client config
- client_id="myclient"
- client_secret="qvi04SUXYJvRDDW7TrujtpQgVWL5eGJK"
- cookie_secret="ZzBkN000Wm0pQkVkKUhzMk5YPntQRUw_ME1oMTZZTy0="
- cookie_secure="false"
- # Upstream config
- http_address="0.0.0.0:4180"
- upstreams="file:///dev/null"
- email_domains=["*"]
- oidc_issuer_url="http://keycloak.qnxr.ltd/realms/testoauth2"
- scope="openid"
- whitelist_domains=[".myapp.magedu.com:*"]
- # Redis session store config
- # session_store_type="redis"
- # redis_connection_url="redis://<RedisServiceName>:6379"
- kind: ConfigMap
- metadata:
- name: oauth2-proxy-config
- namespace: oauth2-proxy
8,访问:http://myapp.magedu.com
9, 登陆keycloak用户后,成功跳转
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。