最近因为公司原因,权限管理使用到了keycloak,按照要求需要集成微信,但是公司安装的keycloak版本比较高:19.0.3
查阅了很多的博文,发现关于集成微信插件的文章几乎没有,可能和keycloak使用人群在国内比较少吧
而且有个很大的问题,keycloak高版本和低版本架构不一样,导致一些老版本的插件根本不能用
说明
本文适用于keycloak 19以上的版本 ,18的版本我没试过,你可以自己下载试试,我个人建议用最新版keycloak
下载源码后,自行修改pom.xml 相version应版本
准备:这里是PC平台扫码登录,首先你得拿到微信开放平台的appid 和appkey
1. 下载插件
插件查考了一些博主写的文章,在根据keycloak的官方源码做了修正和重写,可以前往我的gitee仓库自行下载
开发语言: JAVA
JDK版本:java 11 (由于kecloak-19需要java11以上版本才能运行,建议使用11或以上的JDK)
2. 打包
自己引入maven项目,打jar包,我不多说了
3. 安装
直接看md文件吧,懒得写了,在gitee仓库里面写的比较详细了,如图
4. Http如何获取Keycloak accesstoken
这边简单介绍下,如何基于http请求获取keycloak Accesstoken
请看如图案例,工具POSTMAN:
请求参数:
curl \
-d "client_id=admin-cli" \
-d "client_secret=client_secret" \
-d "grant_type=client_credentials" \
"http://localhost:8080/realms/master/protocol/openid-connect/token"
将token 拼接到header里面就可以调用keycloak的其他API接口了,拼接方式:
headers: {
'Authorization': 'Bearer' + access_token
}
若想基于登录后code获取信息,参考:Keycloak各种配置及API的使用-优快云博客
再次之前请查看官方文档
参考文章:
keycloak官方文档:OpenJDK - Keycloak
keyloak 源码对比记录:KEYCLOAK-14483 Broker state param fix · keycloak/keycloak@41dc94f · GitHub
keycloak 微信插件SPI (keycloak 老版本插件源码): keycloak-services-social-weixin: keycloak social weixin
其他插件(其他博主仓库推荐)
其实这些插件在keycloak里面已经集成了,有兴趣看看
地址:https://github.com/keycloak/keycloak/tree/main/services/src/main/java/org/keycloak/social
注意:这些插件可能不适用你的版本,还是那句话,keycloak新旧版本架构不同,源码不同,所以插件不一定能用,自行选择