kc插件源码梳理及原理说明

如果只是进行keycloak颁发的token进行校验(签名校验和有效期校验),那么我们可以使用jwt-auth这个插件实现,并且已经对这个插件进行二次开发,支持jwt内容解析与向下请求头的传递。

作用

主要用到keycloak提供的uma远程资源授权上面,它对于直接在keycloak后台配置上游服务的资源权限,进行代理,不需要上游服务再去直接对接keycloak。

原理

在lua插件中,实现了与 keycloak服务端的通讯,你可以把这个插件当成是keycloak的一个客户端代理,这个客户端是在keycloak上提前注册的,它对应一个或者多个应用,应用下面有很多api资源,这些资源可以通过keycloak的uma进行管理。

插件配置参考

{
"client_id": "pkulaw",
"client_secret": "c0b7ab8e-485b-4a10-bff8-7c7d3f472096",
"discovery": "https://testcas.xxx.com/auth/realms/xx/.well-known/openid-configuration",
"permissions": [
"Default Resource"
],
"realm": "fabao",
"ssl_verify": false,
"token_endpoint": "https://testcas.xxx.com/auth/realms/xx/protocol/openid-connect/token"
}
  • client_id kc上的客户端ID
  • client_secret 客户端的密钥,本插件不支持public类型的客户端
  • discovery kc的开发接口地址,包含认证地址,登出地址,刷新token地址,公钥地址等
  • permissions 一组资源,提前在kc的pkulaw这个客户端上建立的资源,它是一组路由地址
  • realm kc上对应的域,相当于租户,它下面的组,用户,客户端,角色都是隔离的
  • ssl_verify 是否开启ssl证书验证,如果是自签名请关闭本项
  • token_endpoint kc的认证的地址

插件源码功能点

  • 获取header中的Authorization
  • 判断是否需要密码认证方式,如果需要会向kc发起登录请求
  • 获取jwt_token,从Authorization中截取Bearer 后面的部分
  • 如果没有传token,直接返回401
  • 解析kc中这个客户端的资源列表,如果配置的资源不存在,直接400
  • 验证token的有效性,这块为在线校验,token无效或者登录出,返回401
  • 评估对配置的permisssion资源是否有权限,如无权限,返回403
  • token中包含了资源所需权限,方可正常访问

apisix~authz-keycloak插件介绍的更多相关文章

  1. 【转】LiveWriter插入高亮代码插件介绍 基于SyntaxHighighter

    转自:http://www.cnblogs.com/yaoshiyou/archive/2009/11/25/1610901.html 插件介绍 辛苦了两人小时写日志不小心浏览器崩溃了,发誓以后一定记 ...

  2. JMeter性能监测插件介绍(三)

    JMeter 性能监测插件介绍 压力测试过程中,能够随时对负载服务器的健康状况的把控是相当重要的,有了这些数据,我们才能准确分析出服务器负载瓶颈.JMeter 插件包现在能够支持服务器监控,可以在所有 ...

  3. 【转载】Grunt常用插件介绍

    项目名称 grunt-contrib v0.8.0 项目地址 https://github.com/gruntjs/grunt-contrib 项目介绍 此项目是对grunt常用插件的集合,刚接触gr ...

  4. 学习笔记——Maven实战(八)常用Maven插件介绍(下)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

  5. Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN

    Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN.NET http://blog.csdn.net/borishuai/article/details ...

  6. (转)jQuery LigerUI 插件介绍及使用之ligerTree

    一,简介  ligerTree的功能列表: 1,支持本地数据和服务器数据(配置data或者url) 2,支持原生html生成Tree 3,支持动态获取增加/修改/删除节点 4,支持大部分常见的事件 5 ...

  7. ArcGIS快速制图插件介绍

    ArcGIS快速制图插件介绍 By 李远祥 作品背景 <快速制图插件增强版>在原有的<快速制图插件>基础上,加入植被乱序填充.生成立体楼快.等高线增强显示.一键导出地图和数据. ...

  8. subline text3常用插件介绍

    常用插件介绍:  html beautify(ctrl+shift+alt+f) 自动排版代码 Emmet 输入少量代码后摁Tab键,系统自动补全代码. AutoFileName 快速列出你想引用的文 ...

  9. JMeter 线程组之Stepping Thread Group插件介绍

    线程组之Stepping Thread Group插件介绍   by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13   插件: https://jmeter-plu ...

  10. jenkins 插件介绍

    1.jenkins 利用maven编译,打包,所需插件:Maven Integration: Maven集成插件这个插件提供了Jenkins和Maven的深度集成,无论是好还是坏:项目之间的自动触发取 ...

随机推荐

  1. OpenHarmony应用HAP包签名

    背景 OpenAtom OpenHarmony(以下简称"OpenHarmony")应用如果需要对外发布就必须要通过应用签名,DevEco Studio已提供自动签名功能加速应用开 ...

  2. web.xml最新配置文件

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...

  3. RabbitMQ 08 路由模式

    路由模式 路由模式结构图: 定义配置类. import org.springframework.amqp.core.Binding; import org.springframework.amqp.c ...

  4. html-testRunner在unittest测试套件中的使用

    废话不多说,直接上代码 代码 __author__ = 'huyang:十一的杂文录' import unittest import HtmlTestRunner import sys sys.pat ...

  5. Weblogic、Tomcat、Apache、Nginx等web容器学习笔记

    1.weblogic weblogic是美国Oracle公司的一款产品,是一个基于JAVAEE架构的中间件.是用于开发.集成.部署 .管理大型分布式Web应用.网络应用.数据库应用的Java应用服务器 ...

  6. jenkins 持续集成和交付——开篇(一)

    前言 因为以前就很想看下jenkins了,平时工作中也使用,主要是写脚本,但是jenkins 主要还是说运维部门来搞定的,因为公司安全部门认为程序员不应该去接触运维的东西,但是上次面试问了下,准备把这 ...

  7. Matlab绘图(2)通过代码进行局部放大绘图、多文件绘图

    Matlab进阶绘图 在这次的绘图练习中,我们需要考虑一次性将所有数据文件逐一读入,然后对每幅图图片进行放大处理. 参数设置 这里包括每幅图的标题,图例,读入文件的名称,等等 title_d = {' ...

  8. python之six模块的用法six.py2 six.py3

    import six,sys print(six.PY2) #python2结果为True print(six.PY3) #python3结果为True

  9. 鸿蒙HarmonyO实战-ArkUI动画(组件内转场动画)

    前言 转场动画是一种在电影.视频和演示文稿中使用的动画效果,用于平滑地切换不同的场景或幻灯片.转场动画可以增加视觉吸引力,改善观众的观看体验. 常见的转场动画包括淡入淡出.滑动.旋转.放大缩小等效果. ...

  10. stm32串口晶振不对输出乱码+汇承HC-14lora模块

    最近要用到一个lora无线透传模块,然后就先用两个32开发板(用的STM32F103C8T6)试试简单的收发数据.结果,第一步串口发送一句话就寄了,我串口打印了"hi",结果出现了 ...