OpenShift 4 - 利用 RHSSO 实现应用认证和访问授权
创始人
2024-03-17 22:13:34
0

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》
说明:本文已经在 OpenShift 4.11 环境中验证

文章目录

  • 安装环境
  • 部署应用并配置登录和授权
    • 部署应用
    • 配置 RHSSO 的用户和组
    • 配置应用身份认证
    • 配置应用访问授权
    • 为应用配置登录和访问授权
  • 参考

本文将部署一个应用,然后用 RHSSO 对应用访问进行身份认证,并对不同的登录用户和应用资源进行访问授权。

安装环境

  1. 执行命令安装 Java 环境。
$ cd ~
$ curl -LO https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
$ tar xzvf openjdk-11.0.2_linux-x64_bin.tar.gz
$ JAVA_PATH=~/jdk-11.0.2/bin
$ PATH=$PATH:$JAVA_PATH/bin
  1. 执行命令安装 Maven 环境。
$ curl -LO https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
$ tar xzvf apache-maven-3.8.6-bin.tar.gz
$ PATH=$PATH:~/apache-maven-3.8.6/bin
  1. 执行命令安装 Make 环境。
$ yum install make
  1. 使用 Operator 安装 RHSSO,然后使用默认配置在名为 sso 的项目中创建一个 Keycloak 实例,名称为 example-keycloak。
  2. 执行以下命令获得 RHSSO 控制台的访问地址和 admin 用户的密码,即可登录 RHSSO 控制台。
$ RH_SSO_HOST=$(oc get route keycloak -o jsonpath='{.spec.host}' -n sso) && echo $RH_SSO_HOST
$ oc get secret credential-example-keycloak -n sso -o go-template --template="{{.data.ADMIN_PASSWORD | base64decode}}"

在这里插入图片描述

部署应用并配置登录和授权

部署应用

  1. 在新建的 sso-app 项目中部署 quarkus-petclinic 应用。
$ oc new-project sso-app
$ git clone -b sso-base https://github.com/aolle/quarkus-petclinic.git && cd quarkus-petclinic
$ ./mvnw install -Dquarkus.kubernetes.deploy=true
  1. 获得访问应用的 Route 地址,然后访问应用,此时应用还无需登录即可访问。
$ oc get route quarkus-petclinic -o jsonpath='{.spec.host}' -n sso-app

在这里插入图片描述

配置 RHSSO 的用户和组

本节将创建属于 vet 角色的 angel 用户以及属于 assistant 角色的 elisa 用户。

  1. 在 RHSSO 的控制台中点击 Master,然后点击 Add realm。
    在这里插入图片描述
  2. 设置 Name 为 demo,然后点击 Create。
    在这里插入图片描述
  3. 点击菜单的 Roles,然后点击 Add Role 按钮。
  4. 在 Add Role 页面中为 Role Name 设为 vet ,然后点击 Create。
  5. 重复步骤再创建名一个为 assistant 的 Role。
  6. 点击菜单的 Users,然后点击 Add user 按钮。
  7. 在 Add user 页面中为 Username 设为 angel,然后点击 Save。
  8. 进入 angel 用户的 Credentials 栏目,设置用户密码后点击 Set Password。
    在这里插入图片描述
  9. 进入 angel 用户的 Role Mappings 栏目,给用户赋予 vet 角色。
    在这里插入图片描述
  10. 重复以上步骤创建名为 elisa 的用户,并赋予 assistant 角色。
  11. 点击菜单的 Groups,然后点击 New 按钮。
  12. 在 Create group 页面中设置 Name 为 staff,然后点击 Save。
  13. 再次点击菜单的 Groups,然后在 User Groups 页面中选中 staff,点击 New 按钮。
    在这里插入图片描述
  14. 在 Create group 页面中设置 Name 为 Personal staff,然后 Save。
  15. 最后应该在 User Groups 页面中看到下图的组关系。
    在这里插入图片描述

配置应用身份认证

本节将实现对应用 http://quarkus-petclinic-sso.apps.cluster-72c7x.72c7x.sandbox2951.opentlc.com 的访问进行身份认证。

  1. 点击菜单的 Clients,然后点击 Create 按钮。
  2. 在 Add Client 页面中设置 Client ID 为 quarkus-petclinic,然后点击 Save。
  3. 在 quarkus-petclinic 的 Setting 页面根据下表进行配置,然后点击 Save。
    | 属性 | 值 |
    |–|–|
    | Access Type | confidential |
    | Authorization Enabled| ON |
    | Valid Redirect URIs| http://quarkus-petclinic-sso.apps.cluster-72c7x.72c7x.sandbox2951.opentlc.com/* |

配置应用访问授权

本节将配置只允许 vet 角色的用户才能访问应用的 VETERINARIANS 栏目,属于 demo realm 的其他用户可以访问应用的其他栏目。
在这里插入图片描述

  1. 点击菜单的 Clients,然后进入 quarkus-petclinic 的 Authorization → Resources。
    在这里插入图片描述
  2. 点击 Name 为 Default Resource 一行后的 Create Permission 按钮。
  3. 在 Add Resource Permission 页面中设置 Name 为 Default Resource Permission,然后点击 Create Policy…​ → Group。
    在这里插入图片描述
  4. 在 Add Group Policy 页面中设置 Name 为 Default Group Policy;然后先选中 Groups 的 staff 再点击 Select,在出现的表中选则 Extend to Children,再将 Logic 设为 Negative,最后点击 Save。
    在这里插入图片描述
  5. 页面会跳转回 Add Resource Permission 页面,点击 Save。
    在这里插入图片描述
  6. 在 Authorization​ → Resources 中点击 Create。
    在这里插入图片描述
  7. 在 Add Resource 页面中将 Name 和 Display name 设为 Vets Resource,将 URI 设为 /vets.html,然后点击 Save。
    在这里插入图片描述
  8. 进入 Authorization → Resources 页面,在 Vets Resource 一行点击 Create Permission 按钮。
    在这里插入图片描述
  9. 在 Add Resource Permission 页面中设置 Name 为 Vets Resource Permission, 在 Apply Policy 的 Create Policy 下拉框中选中Role。
    在这里插入图片描述
  10. 在 Add Role Policy 页面中设置 Name 为 Vet Role Policy,为 Realm Roles 选择出 vet,然后选中 Required,最后点击 Save。
    在这里插入图片描述
  11. 页面会再次跳回 Add Resource Permission 页面,点击 Save 按钮。
    在这里插入图片描述

为应用配置登录和访问授权

  1. 在 quarkus-petclinic 的 Clients 的 Credentials 栏目中记下下图中的 Secret 内容。
    在这里插入图片描述
  2. 执行命令,基于 Secret 内容创建 configmap 和 secret。
$ MY_SSO_CLIENT_SECRET=kFJFDBluHlQIVCQg9S0aF3WAzUwXABto
$ oc create configmap quarkus-petclinic-config --from-literal=SSO_HOST=${RH_SSO_HOST} -n sso-app
$ oc create secret generic quarkus-petclinic-secret --from-literal=SSO_CLIENT_SECRET=${MY_SSO_CLIENT_SECRET} -n sso-app
  1. 执行命令,将一下配置追加到应用的 application.properties 配置文件中。
$ cat >> ~/quarkus-petclinic/src/main/resources/application.properties  << EOF
quarkus.oidc.auth-server-url=https://${RH_SSO_HOST}/auth/realms/demo
quarkus.oidc.client-id=quarkus-petclinic
quarkus.oidc.credentials.secret=${MY_SSO_CLIENT_SECRET}
quarkus.oidc.tls.verification=none
quarkus.oidc.roles.source=accesstokenquarkus.oidc.application-type=web-app
quarkus.oidc.webapp.auth-server-url=${quarkus.oidc.auth-server-url}
quarkus.oidc.webapp.client-id=${quarkus.oidc.client-id}
quarkus.oidc.webapp.credentials.secret=${quarkus.oidc.credentials.secret}
quarkus.oidc.webapp.roles.source=${quarkus.oidc.roles.source}quarkus.keycloak.policy-enforcer.enable=true
EOF
  1. 执行以下命令,为应用 pom.xml 文件增加扩展,然后重新部署运行应用。
./mvnw quarkus:add-extension -Dextensions='oidc,keycloak-authorization'
./mvnw install -Dquarkus.kubernetes.deploy=true
  1. 分别用 angel 和 elisa 用户登录,确认他们都需要登录才能访问应用。并且 elisa 无法访问应用的 VETERINARIANS 栏目,而 angel 可以访问 VETERINARIANS 栏目。

参考

https://olleb.com/rhsso-workshop/index.html

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...