基于springboot做ukey认证登录
网上搜了比较多通关配置springboot做双向认证的,可是大都是客户端直接安装证书的那种,不是读ukey里的证书,无法满足需求。
ukey有提供基于gm/t 0016-2012的dll,可以通过java调用dll。ukey是rsa容器。
问题在于不会通过vue或者jsp调用本地(浏览器端)dll,也不知道调到本地dll后该怎么与springboot去做双向认证。求个解决方案。
环境:基于arrch64的麒麟服务器,jdk1.8,vue2
附: [ https://www.doc88.com/p-6911351376514.html](网上百度的gm/t 0016-2012)
如果有现成代码或者可以详细指点到解决问题的话,可以call我细聊,可以有偿。
补充:我有看到比较多博客写的,通过配置springboot SSL来实现双向认证的博客。
这类博客的认证流程大都是:配置springboot,生成证书,安装证书。然后框架会帮忙实现认证。
我的需求不同的地方在于,我的客户端证书是在ukey里,没法直接安装或添加到浏览器。
所以就产生了两个问题:
1、怎么调用本地DLL。
2、调用到本地DLL获取到证书信息之后,能不能还是通过配置springboot ssl的方式,让框架帮我实现认证。当然也可以完全自定义认证,只是自定义也问题挺多的,所以想偷个懒。
附一些配置springboot ssl的博客:
http://t.csdn.cn/Hjwft
http://t.csdn.cn/1A97l
基于Spring Boot实现ukey认证登录可以通过以下步骤进行:
在前端(Vue或JSP)页面中添加ukey认证的相关逻辑,包括调用本地的dll进行ukey的读取操作。你可以使用ActiveX控件或浏览器插件来调用本地dll,具体取决于你的需求和浏览器支持情况。这部分的实现需要你对前端技术有一定的了解。
前端在获取到ukey的证书信息后,将其发送到后端的Spring Boot应用。可以通过Ajax请求或表单提交等方式将证书信息发送到后端。
在Spring Boot应用中,接收前端发送的ukey证书信息,并调用ukey相关的dll进行验证和解析操作。你可以使用Java Native Interface (JNI) 技术来调用本地dll。在Java代码中编写JNI接口,然后将其与dll进行绑定。JNI接口将充当Java和本地dll之间的桥梁。
在Spring Boot中,根据ukey的验证结果进行认证登录操作。你可以自定义认证逻辑,包括将ukey证书信息与数据库中的用户信息进行比对等。
需要注意的是,调用本地dll可能涉及到浏览器的安全限制和兼容性问题。不同浏览器可能对插件的支持有所不同,因此在选择调用dll的方式时需要进行充分的测试和兼容性考虑。
关于具体的代码实现和细节,由于涉及到具体的ukey和dll相关的操作,建议你详细阅读ukey提供的文档和示例代码,或者咨询ukey厂商的技术支持,以便更好地集成和使用ukey认证功能。
希望这些信息对你有帮助,祝你成功实现基于Spring Boot的ukey认证登录!
基于new bing部分指引作答:
正确的做法是,通过与后端的Spring Boot应用程序进行通信,将浏览器端的Ukey认证信息传递给后端,然后由后端来处理Ukey认证。
以下是一个示例代码,展示如何在Vue和Spring Boot之间进行通信,并传递Ukey认证信息进行验证。
前端(Vue)代码示例:
<template>
<div>
<button @click="authenticate">Authenticate with Ukey</button>
</div>
</template>
<script>
export default {
methods: {
authenticate() {
// 假设您已经在后端实现了一个'/authenticate'的接口用于Ukey认证
// 使用fetch或axios等库发送POST请求给后端
fetch('/authenticate', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
ukeyData: 'your_ukey_data_here' // 从Ukey获取的认证信息
})
})
.then(response => response.json())
.then(data => {
// 处理后端返回的认证结果
if (data.authenticated) {
// 认证成功
} else {
// 认证失败
}
})
.catch(error => {
console.error('Authentication failed', error);
});
}
}
};
</script>
在上述示例中,当用户点击"Authenticate with Ukey"按钮时,将触发authenticate方法。该方法使用fetch或axios库发送POST请求给后端的'/authenticate'接口,并将Ukey认证信息作为请求的一部分发送给后端。
后端(Spring Boot)代码示例:
@RestController
public class UkeyAuthenticationController {
@PostMapping("/authenticate")
public ResponseEntity<?> authenticate(@RequestBody UkeyAuthenticationRequest request) {
String ukeyData = request.getUkeyData(); // 从请求中获取Ukey认证信息
// 在这里进行Ukey认证逻辑的处理
// 调用Ukey DLL库的相关方法来验证ukeyData
if (ukeyDataIsValid) {
// 认证成功
return ResponseEntity.ok().body(new AuthenticationResponse(true));
} else {
// 认证失败
return ResponseEntity.ok().body(new AuthenticationResponse(false));
}
}
}
在上述示例中,我们创建了一个Spring Boot的RestController,定义了一个'/authenticate'的POST接口用于接收Ukey认证信息。请求的主体(RequestBody)包含了前端传递的Ukey认证信息。在实际应用中,您需要根据Ukey DLL库的文档和示例代码,编写与Ukey交互的逻辑。
根据Ukey认证的结果,后端将返回一个表示认证成功或失败的JSON响应。
上述代码示例仅用于说明概念,具体的实现取决于您所使用的Ukey DLL库和认证逻辑。
希望这次的回答能够帮助到您。
具体读取dll等操作可以请求后台springboot提供的接口,而前端vue或者jsp通过请求后端接口实现验证的过程。
名不副实
js调不了的哦~~~考虑使用Java Applet是一种嵌入在网页中运行的Java小程序,可以通过Java代码调用本地DLL,另外,你也可以尝试使用浏览器插件(如Chrome插件)来实现与本地DLL的交互