Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用vertx的JWT公钥/私钥认证中的握手_Java_Jwt_Rsa_Public Key Encryption_Vert.x - Fatal编程技术网

Java 使用vertx的JWT公钥/私钥认证中的握手

Java 使用vertx的JWT公钥/私钥认证中的握手,java,jwt,rsa,public-key-encryption,vert.x,Java,Jwt,Rsa,Public Key Encryption,Vert.x,我创建了一个小型vertx auth服务器,它使用公钥/私钥对JWT令牌进行签名/生成 PrivateKey privateKey = CertUtil.getPrivateKey("config/private_key.der"); PublicKey publicKey = CertUtil.getPublicKey("config/public_key.der"); // Create a JWT Auth Provider

我创建了一个小型vertx auth服务器,它使用公钥/私钥对JWT令牌进行签名/生成

        PrivateKey privateKey = CertUtil.getPrivateKey("config/private_key.der");
        PublicKey publicKey = CertUtil.getPublicKey("config/public_key.der");

        // Create a JWT Auth Provider
        JWTAuth jwt = JWTAuth.create(vertx, new JWTAuthOptions()
                .setPubSecKeys(List.of(new PubSecKeyOptions()
                        .setAlgorithm("RS256")
                        .setPublicKey(Base64.getEncoder().encodeToString(publicKey.getEncoded()))
                        .setSecretKey(Base64.getEncoder().encodeToString(privateKey.getEncoded())))));
        // protect the API
        router.route("/api/*").handler(JWTAuthHandler.create(jwt, "/api/new-token"));

        // this route is excluded from the auth handler
        router.get("/api/new-token").handler(ctx -> this.generateAndSendToken(ctx, jwt));

        // this is the secret API
        router.get("/api/protected").handler(ctx -> {
            ctx.response().putHeader("Content-Type", "text/plain");
            ctx.response().end("a secret you should keep for yourself...");
        });

        vertx.createHttpServer().requestHandler(router).listen(8080);
现在,当我从客户端访问/api/newtoken时,我从上面的身份验证服务器获得了一个JWT令牌。不过,我有一些悬而未决的问题:

  • 身份验证服务器如何确保客户端具有服务器公钥并且是真实的
  • 客户端如何向身份验证服务器发送公钥
  • 如何使/api/new令牌安全,以便只有合法客户端才能连接到它

为什么不将此任务委托给开源身份和访问管理部门。它为您的应用程序添加身份验证,并以最小的麻烦保护服务

我们已经将其应用到我们的项目中,效果非常好

要将其插入Vert.x,您可以遵循以下tutos:


为什么不将此任务委托给开源身份和访问管理部门。它为您的应用程序添加身份验证,并以最小的麻烦保护服务

我们已经将其应用到我们的项目中,效果非常好

要将其插入Vert.x,您可以遵循以下tutos: