当前位置:   article > 正文

Keycloak实现开源SSO oauth2登陆权限系统(1)—— 安装keycloak并配置 oauth clienntid 和 nginx-ingress配置oauth-proxy2授权登陆跳转_keycloak oauth

keycloak oauth

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

  1. apiVersion: v1
  2. kind: Endpoints
  3. metadata:
  4. name: proxy-ingress
  5. subsets:
  6. - addresses:
  7. - ip: 192.168.2.96
  8. ports:
  9. - port: 80
  10. protocol: TCP
  11. ---
  12. apiVersion: v1
  13. kind: Service
  14. metadata:
  15. name: myapp
  16. namespace: default
  17. spec:
  18. selector:
  19. app: myapp
  20. release: canary
  21. ports:
  22. - name: http
  23. targetPort: 80
  24. port: 80
  25. ---
  26. apiVersion: apps/v1
  27. kind: Deployment
  28. metadata:
  29. name: myapp-backend-pod
  30. namespace: default
  31. spec:
  32. replicas: 1
  33. selector:
  34. matchLabels:
  35. app: myapp
  36. release: canary
  37. template:
  38. metadata:
  39. labels:
  40. app: myapp
  41. release: canary
  42. spec:
  43. containers:
  44. - name: myapp
  45. image: registry.cn-hangzhou.aliyuncs.com/luyanjiegerouth/nginx:alpine
  46. ports:
  47. - name: http
  48. containerPort: 80

 6.2 创建应用ingress yaml

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: ingress-myapp
  5. annotations:
  6. nginx.ingress.kubernetes.io/auth-signin: http://$host/oauth2/start?rd=$escaped_request_uri
  7. nginx.ingress.kubernetes.io/auth-url: http://$host/oauth2/auth
  8. nginx.ingress.kubernetes.io/proxy-buffer-size: 512k
  9. spec:
  10. ingressClassName: "nginx"
  11. rules:
  12. - host: "myapp.magedu.com"
  13. http:
  14. paths:
  15. - pathType: Prefix
  16. path: "/"
  17. backend:
  18. service:
  19. name: myapp
  20. port:
  21. number: 80

7,创建oauth2-proxy的deployment和ingress  yaml

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. labels:
  5. app: oauth-proxy
  6. name: oauth-proxy
  7. namespace: oauth2-proxy
  8. spec:
  9. type: ClusterIP
  10. selector:
  11. app: oauth-proxy
  12. ports:
  13. - name: http-oauthproxy
  14. port: 4180
  15. ---
  16. apiVersion: apps/v1
  17. kind: Deployment
  18. metadata:
  19. labels:
  20. app: oauth-proxy
  21. name: oauth-proxy
  22. namespace: oauth2-proxy
  23. spec:
  24. replicas: 1
  25. selector:
  26. matchLabels:
  27. app: "oauth-proxy"
  28. template:
  29. metadata:
  30. labels:
  31. app: oauth-proxy
  32. spec:
  33. volumes:
  34. - name: oauth2-proxy-config
  35. configMap:
  36. name: oauth2-proxy-config
  37. containers:
  38. - name: oauth-proxy
  39. image: "quay.io/oauth2-proxy/oauth2-proxy:latest"
  40. ports:
  41. - containerPort: 4180
  42. volumeMounts:
  43. - name: oauth2-proxy-config
  44. mountPath: /etc/oauth2-proxy.cfg
  45. subPath: oauth2-proxy.cfg
  46. args:
  47. - --config=/etc/oauth2-proxy.cfg
  48. ---
  49. apiVersion: networking.k8s.io/v1
  50. kind: Ingress
  51. metadata:
  52. name: oauth2-proxy
  53. namespace: oauth2-proxy
  54. spec:
  55. ingressClassName: nginx
  56. rules:
  57. - host: myapp.magedu.com
  58. http:
  59. paths:
  60. - backend:
  61. service:
  62. name: oauth-proxy
  63. port:
  64. number: 4180
  65. path: /oauth2
  66. pathType: Prefix
  67. ---
  68. apiVersion: v1
  69. data:
  70. oauth2-proxy.cfg: |-
  71. # Provider config
  72. provider="keycloak"
  73. provider_display_name="Keycloak"
  74. login_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/auth"
  75. redeem_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/token"
  76. validate_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/userinfo"
  77. profile_url="http://keycloak.qnxr.ltd/realms/testoauth2/protocol/openid-connect/userinfo"
  78. ssl_insecure_skip_verify=true
  79. # Client config
  80. client_id="myclient"
  81. client_secret="qvi04SUXYJvRDDW7TrujtpQgVWL5eGJK"
  82. cookie_secret="ZzBkN000Wm0pQkVkKUhzMk5YPntQRUw_ME1oMTZZTy0="
  83. cookie_secure="false"
  84. # Upstream config
  85. http_address="0.0.0.0:4180"
  86. upstreams="file:///dev/null"
  87. email_domains=["*"]
  88. oidc_issuer_url="http://keycloak.qnxr.ltd/realms/testoauth2"
  89. scope="openid"
  90. whitelist_domains=[".myapp.magedu.com:*"]
  91. # Redis session store config
  92. # session_store_type="redis"
  93. # redis_connection_url="redis://<RedisServiceName>:6379"
  94. kind: ConfigMap
  95. metadata:
  96. name: oauth2-proxy-config
  97. namespace: oauth2-proxy

8,访问:http://myapp.magedu.com

9, 登陆keycloak用户后,成功跳转

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/926195
推荐阅读
相关标签
  

闽ICP备14008679号