首页 > 其他分享 >apisix~authz-keycloak插件介绍

apisix~authz-keycloak插件介绍

时间:2024-05-16 10:30:13浏览次数:33  
标签:kc authz 插件 地址 token 客户端 apisix keycloak

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中包含了资源所需权限,方可正常访问

标签:kc,authz,插件,地址,token,客户端,apisix,keycloak
From: https://www.cnblogs.com/lori/p/18195461

相关文章

  • Mac电脑idea插件JRebel提示不可用
    现象:原因:常见如:https://jrebel.qekang.com/ 解决办法:降低IDEA>jrebel版本2022.4.1进入idea:打开Preferences-Plugins找到jrebel插件并卸载;到idea官方店下载:https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions/stable找到对应版本下载到本地后,打开......
  • SD安装animatediff插件
    在线地址https://gitcode.net/ranting8323/sd-webui-animatediff在线安装安装完重启下载animatediff专用模型和8个镜头(可选)https://huggingface.co/guoyww/animatediff/tree/main启用Animatediff公司电脑显卡不行,很多东西做不了。更多玩法可以去b站搜一下视频......
  • SD安装adetailer插件
    在线安装,这个地址是国内备份的,要比git快一点安装后重启下载模型,放到models\adetailer地址https://huggingface.co/Bingsu/adetailer/tree/main看情况,只修复人脸的话,就只下载face的然后画图的时候勾选Adetailer比如修复人脸detailface......
  • apisix~升级原始插件的方法
    扩展apisix原始插件当apisix提供的插件不能满足我们要求时,我们可能需要将它的plugin进行个性化扩展,例如一个jwt认证插件jwt-auth,它本身具有验证jwt有效性功能,支持rs256,hs256等常用签名算法,但在验证之后,如果希望将jwt中的用户信息取出来,并放请求头向上游传递,目前这个插件是不支持......
  • 【django学习-24】自定义插件
    1.ModelForm可以帮助我们生成HTML标签,这种是普通的标签classUserModelForm(forms.ModelForm):classMeta:model=models.UserInfofields=["name","password",]form=UserModelForm()2.如果我们要使用bootstrap的标签,该怎么操作呢?2.1:自定义......
  • CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
    CodeGeeX是支持适配VisualStudio2019的唯一一款国产智能辅助编程工具,已经在VisualStudio趋势上霸榜2周!CodeGeeXv1.0.4版本上线VisualStudio插件市场,带来了多项新功能和性能优化,提升编程体验。新功能亮点速览:一、侧边栏工具箱功能v1.0.4版本中,CodeGeeX新增了侧边栏工具箱......
  • npm插件发布
    闲来无事在npm上发布个插件玩玩,例如我发布的小插件joy-tools注册账号https://www.npmjs.com初始化npminit-y登录npmlogin输入用户名密码邮箱,同时还会给你发邮箱验证码进行输入登录;登录报错一般是npm源地址的问题,切换为原始地址即可发布npmpublish其它指令介绍......
  • apisix~lua插件开发与插件注册
    开发插件的步骤在APISIX中,要自定义插件,一般需要按照以下步骤进行操作:编写Lua脚本:首先,你需要编写Lua脚本来实现你想要的功能。可以根据APISIX提供的插件开发文档和示例进行编写。将Lua脚本放置到APISIX插件目录:将编写好的Lua脚本文件放置到APISIX的插件目录下,一般是/usr/loc......
  • apisix~自定义插件的部署
    参考https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-luahttps://apisix.apache.org/docs/apisix/next/plugin-develop/https://apisix.apache.org/docs/apisix/next/plugins/prometheus/https://apisix.apache.org/blog/2022/02/16/file-logge......
  • vite 自定义插件获取打包时长
    //vite.config.ts//打包时间functionbuildTimePlugin(mode){console.log('mode:>>',mode)return{name:'build-time',//在buildStart阶段设置初始值buildStart(){this.startTime=Date.now()if(mode!==&......