目前JAVA后台主流框架已经切换到了Spring boot及Cloud,但是最近接入吉大正元的PKI登录,发现提供的demo和jar包还是基于Servlet的,使用起来不是很方便。在全网搜寻很久,也只有一篇 以war包形式部署tomcat的示例,所以在此分享原生jar启动,且可以通过外部配置切换网关配置的案例。
理清依赖包
将吉大demo所需的几个核心jar包传到本地私服,或者以本地resource加载
<!-- 吉大正元PKI对接 -->
<dependency>
<groupId>jit.ass</groupId>
<artifactId>J2EE_Agent</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>jit.ass</groupId>
<artifactId>jit-cinas-saml11</artifactId>
<version>1.0.0.0</version>
<classifier>jdk13</classifier>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>jit.ass</groupId>
<artifactId>jit-cinas-commons</artifactId>
<version>1.0.0.0</version>
<classifier>jdk13</classifier>
</dependency>
<dependency>
<groupId>apache-xmlsec</groupId>
<artifactId>xmlsec</artifactId>
<version>1.3.0</version>
</dependency>
<!-- servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- 吉大使用的http和log依赖所需 -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.7</version>
</dependency>
源码修改
修改原始代码
实现原始Web.xml配置,
使用@WebFilter注解,控制url匹配为请求认证的接口URL,载入配置文件JITAgentConfig.xml
由于绝对文件路径问题,需要调整init方法,修改获取配置文件的方式
由于实际项目,存在不同应用指向不同的网关认证服务器,原始的xml配置无法完全满足需求,所以单独新增pki配置文件,可以放到nacos或gitlab上,按照不同项目进行对应配置,同理,认证中的其他配置均可如此替换
应用流程
备注
此处直接透出身份证号码,不是一个最佳选择,毕竟存在用户信息泄漏,也暴露了通过身份证号获取身份信息的接口
可以考虑直接透传鉴权token 或者在storage中做交互,此处不拓展