当前位置: 首页 > news >正文

OpenShift 4 - 利用 RHSSO 实现应用认证和访问授权

《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=accesstoken
 
quarkus.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

相关文章:

  • 绵阳公司商务网站制作/班级优化大师的优点
  • wordpress获取page id/my63777免费域名查询
  • 如何进行网站域名解析/网站制作软件免费下载
  • 网站的素材做logo/seo优化信
  • cvm可以做网站服务器吗/b2b网站
  • 朝阳企业网站建设方案费用/seo zac
  • Windows Access Token
  • 【Python】《Python编程:从入门到实践 (第2版) 》笔记-Chapter2-变量和简单数据类型
  • MySQL高级语句(二)
  • 【数据结构2】算法的基本概念
  • [附源码]Python计算机毕业设计Django抗疫医疗用品销售平台
  • 云原生之Docker简介和环境准备
  • 补知识点:Stream API
  • Springboot门诊电子处方管理系统3kqta计算机毕业设计-课程设计-期末作业-毕设程序代做
  • 项目管理逻辑:项目经理如何掌控项目生命周期, 才能避免身心俱疲?
  • 计算机毕业设计Java电影评论网站系统(源码+系统+mysql数据库+lw文档)
  • Vector - VTESTStudio(软件篇) - CAPL实现MD5算法 - 01
  • 《二进制方式搭建一个完整K8s集群》v1.20-详细版