基于springboot做ukey认证登录

基于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认证登录可以通过以下步骤进行:

  1. 在前端(Vue或JSP)页面中添加ukey认证的相关逻辑,包括调用本地的dll进行ukey的读取操作。你可以使用ActiveX控件或浏览器插件来调用本地dll,具体取决于你的需求和浏览器支持情况。这部分的实现需要你对前端技术有一定的了解。

  2. 前端在获取到ukey的证书信息后,将其发送到后端的Spring Boot应用。可以通过Ajax请求或表单提交等方式将证书信息发送到后端。

  3. 在Spring Boot应用中,接收前端发送的ukey证书信息,并调用ukey相关的dll进行验证和解析操作。你可以使用Java Native Interface (JNI) 技术来调用本地dll。在Java代码中编写JNI接口,然后将其与dll进行绑定。JNI接口将充当Java和本地dll之间的桥梁。

  4. 在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的交互