日志

keycloak集成微信登陆~解决国内微信集成的问题

 来源    2021-01-13    1  

之前看了国内写的微信集成keycloak的文章,然后拿来就用了,但我的是jboss部署的keycloak,然后使用他的包之后,会出现类无法找到的问题,之后找了很多资料,多数都是国外的,在今天终于找到了解决这个问题的方法,首先你用shade,assemble去打包,把缺少的包打进来,这种方案是不行的,因为人家部署的项目里已经有你这些keyclock包了,所以会出现不同classload装载相同类的情况,结果就是出现not a subtype的问题。

总结

参考:https://stackoverflow.com/questions/57778240/noclassdeffounderror-in-a-provider-jar-when-using-a-class-from-org-keycloak-auth

一 需要向MANIFEST.MF里注入依赖包

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <manifestEntries>
                    <Dependencies>org.keycloak.keycloak-services</Dependencies>
                </manifestEntries>
            </archive>
        </configuration>
    </plugin>

生成的META-INF/MANIFEST.MF

二 版本包和版本

你的weixin里使用的keycloak应该和服务端的版本相同,因为你的包也是要被部署到人家的服务器的,我和服务器用的是11.0.2

<dependencies>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-core</artifactId>
            <scope>provided</scope>
            <version>${keycloak.version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-server-spi</artifactId>
            <scope>provided</scope>
            <version>${keycloak.version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-server-spi-private</artifactId>
            <scope>provided</scope>
            <version>${keycloak.version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-services</artifactId>
            <scope>provided</scope>
            <version>${keycloak.version}</version>
        </dependency>
</dependencies>

三 两个类,一个配置

具体代码可以仿照他的github实现 方式

public class WeiXinIdentityProvider extends AbstractOAuth2IdentityProvider<OAuth2IdentityProviderConfig>
        implements SocialIdentityProvider<OAuth2IdentityProviderConfig> {}

public class WeiXinIdentityProviderFactory extends AbstractIdentityProviderFactory<WeiXinIdentityProvider>
        implements SocialIdentityProviderFactory<WeiXinIdentityProvider> {}

META-INF.services里添加文件org.keycloak.broker.social.SocialIdentityProviderFactory,它的内容如下,内容就是它的一个实现类,一个工厂类

com.test.weixin.WeiXinIdentityProviderFactory

四 部署

jboss/keycloak的部署插件目录是/opt/jboss/keycloak/standalone/deployments

docker cp ./keycloak-services-social-weixin.jar keycloak:/opt/jboss/keycloak/standalone/deployments &&
docker cp ./templates/realm-identity-provider-weixin.html  keycloak:/opt/jboss/keycloak/themes/base/admin/resources/partials  &&
docker cp ./templates/realm-identity-provider-weixin-ext.html  keycloak:/opt/jboss/keycloak/themes/base/admin/resources/partials

你的程序不需要重启,它是支持热部署的!

相关文章
phonegap(cordova) 自己定义插件代码篇(五)----android ,iOS 集成微信登陆
日志统一登陆还是非常有必要的,安全,放心.代码 /*cordov 微信自己定义插件*/ (function (cordova) { var define = cordova.define; define( ...
1
解决iOS app集成共享QQ场地,微信的朋友,朋友等功能圈,不能采用苹果公司的审计问题
日志最近提交的应用程序App Store时刻,由于App综合QQ登录.份额QQ场地.微信等功能.被拒绝.很郁闷:在最佳.想想办法,这个问题是可以解决. 当共享平台列表显示.根据推断当前设备被安装在一节Ap ...
2
微信和支付宝的支付集成库 – Android-Pay
日志Android-Pay 支持微信和支付宝两种主流支付的集成库, 两行代码实现微信支付, 三行代码实现支付宝支付 引入 gradle 对应的项目中的build.gradle文件添加依赖: depende ...
2
C#开发微信门户及应用(7)-微信多客服功能及开发集成
日志最近一直在弄微信的集成功能开发,发现微信给认证账户开通了一个多客服的功能,对于客户的咨询,可以切换至客服处理的方式,而且可以添加多个客服进行处理,这个在客户咨询比较多的时候,是一个不错的营销功能.微信 ...
2
微信登陆公众号管理微信支付及微信消息 – weixin-python
日志微信SDK 提供微信登陆,公众号管理,微信支付,微信消息的全套功能 文档目录 快速开始 微信消息 微信支付 微信登陆 微信公众平台 微信消息功能: 接收微信推送消息 接受微信推送事件 发送微信消息 微 ...
1
微信登陆授权界面 – 流程图
问答产品微信授权登陆流程图::
1
.NET Core IdentityServer4实战 第Ⅳ章-集成密码登陆模式
日志回顾下ClientCredentials模式,在ReSourceApi中定义了我们公开服务,第三方网站想要去访问ReSourceApi则需要在身份验证服务中获取toekn,根据token的内容,硬编码 ...
1
Spring/Spring boot正确集成Quartz及解决@Autowired失效问题
日志周五检查以前Spring boot集成Quartz项目的时候,发现配置错误,因此通过阅读源码的方式,探索Spring正确集成Quartz的方式. 问题发现 检查去年的项目代码,发现关于QuartzJo ...
1
Android微信登陆
日志前言分享到微信朋友圈的功能早已经有了,但微信登录推出并不久,文档写的也并不是很清楚,这里记录分享一下. 声明欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com农民 ...
1
HTML实现点击时的阴影(:active)(已解决iOS微信上无法使用)
日志一般是用这个委类:active 参考:http://www.w3school.com.cn/cssref/selector_active.asp 但是业界上实现的效果中,今日头条的手机端网页却不是这样 ...
1
解决安卓微信浏览器中location.reload 或者 location.href失效的问题
日志在移动wap中,经常会使用window.location.href去跳转页面,这个方法在绝大多数浏览器中都不会 存在问题,但早上测试的同学会提出了一个bug:在安卓手机的微信自带浏览器中,这个是失效的 ...
2
[微信JSSDK] 解决SDK注入权限验证 安卓正常,IOS出现config fail
日志实测有效 解决微信游览器和企业微信游览器JSSDK注入权限验证 安卓正常,IOS出现config fail 一开始我们想到的是可能微信这边的Bug,但细想一下应该不是.因为可能涉及到了IOS的底层原理 ...
2
练习题(登陆-进度条-微信接口判断qq-微信接口判断列车时刻表-)
日志1.写一个用户的登陆注册的界面,用户的密码用hashlib加密存在文件中,登陆时候,用户的密码要和文件中的密码一致才行 def sha(password): #加密函数 passwd = hashli ...
1
友盟iOS微信登陆没有回调的原因
日志1.在友盟文档中这样说: 链接 7.4 微信登录 添加配置文件参考文档:添加微信及朋友圈,添加相关库文件,配置URL schemes及添加系统回调 注意微信登录必须先在微信开放平台申请微信登录权限 在 ...
1
iOS - 集成高德SDK解决Marker点重复点击无效问题
日志场景: 在处理Marker点击事件时,此时地图上有Marker点A及Marker点B,当选中Marker点A后,SDK方法 "didSelectAnnotationView"响应了 ...
2
解决H5微信浏览器中audio兼容-- 背景音乐无法自动播放
日志我们知道,ios 在safari浏览器中,audio标签不能在没有用户交互的情况下自动播放或有js直接控制播放,这是系统限制的一些原因. 但是背景音乐在微信浏览器可以设置自动播放,config配置一下 ...
1
微信登陆,支付防坑指南
日志1.防坑指南: 微信未返回Code? 请更新libammsdk.jar,import com.tencent.mm.sdk.modelmsg.SendAuth.发现命名空间发生了很大的变化.(微信婊这 ...
1
通过patch 方式解决cube.js 集成cratedb 的问题
日志今天有写过一个简单的cube.js 集成cratedb 的说明,主要是在driver 上的兼容问题,处理方法是删除不兼容的代码 实际上我们也可以通过类似linux c 开发中的patch 方式解决,简 ...
1
CI工具Jenkins的安装配置linux ——jenkins集成sonarqube-异常解决
日志Setup 官网https://jenkins.io/ 下载war包,扔到tomcat下启动即可. 如果有port限制,在iptables中打开商品限制. 访问http://ip:port/jenki ...
2