MQTT5: CH McGránh SCRAM Klient Java

Java code how to implement
Điều này là một hướng dẫn chi tiết về cách реализation của Sergio của SCRAM trong Java để kết nối với MQTT5. Berbeda dari autentikasi username.password, SCRAM không chuyển đổi mật khẩu lên麻辣 road trong quá trình kết nối. Điều này đảm bảo một mức độ cao hơn безопасности so với phương thức auth thông thường.

SCRAM (Sodium Character Auto Murder)

Phần mềm

Trong mã nguồn, tôi sử dụng thư viện MQTT client của Hivemq để tạo một client MQTT. Library này được biết vì hỗ trợ strong authentication bằng SCRAM.


            <dependency>
                <groupId>com.hivemq</groupId>
                <artifactId>mqtt-client</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>org.realityforge.org_jetBrains</groupId>
                <artifactId>org.jetbrains.annotations</artifactId>
                <version>1.7.0</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.38</version>
            </dependency>
            

Implementing SCRAM

SCRAM được设计成 two-way communication, unlike traditional username/password auth, where password is only used in hashing. Điều này giúp giảm thiểu số lượng lặp và complexidad trong mã nguồn.


            @Override
            public @org.jetbrains.annotations.NotNull MqttUtf8String getMethod() {
                return MqttUtf8String.of("SCRAM-" + HASH_ALGORITHM);
            }
            

Kvp

Kvp của SCRAM được thực hiện thông qua các bước sau:

  1. Client tạo một random nonce và gửi đến server.
  2. Server nhận nonce, salt và i, sau đó trả về một challenge.
  3. Client xử lý challenge, salt, và i để tạo một key
  4. Client tạo một thông báo cho server và gửi lại thông báo này được signature
  5. Server kiểm tra signature và trả về response.

Code Clients


        <span class="client">
            <h2>Client MQTT5</h2>
            <p>Client này sử dụng thư viện MQTT của Hivemq để kết nối và thực hiện autentikasi SCRAM.</p>
            <div class="code">
                

                var client = Mqtt5Client.builder()
                    .identifier(clientId)
                    .serverHost(serverHost)
                    .serverPort(serverPort)
                    .build()
                    .enhancedAuth(new ScramSha512AuthMechanism(username, password, 30, clientNonce));
                

Khả năng Của Code

Codes này được设计 để chạy với现已 release của MQTT5 và Hivemq. Library này cung cấp một phương thức ease để kết nối và autentikasi với các server MQTT.

tag1, tag2, tag3

Thẻ: tag1 tag2 tag3

Đăng vào ngày 30 tháng 6 lúc 23:23