การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

Java:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

วิธีการ:

Java ทำให้การส่งคำขอ HTTP พร้อมการรับรองความถูกต้องแบบพื้นฐานเป็นเรื่องง่ายโดยใช้คลาส HttpURLConnection นี่คือตัวอย่างที่รวดเร็ว:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class BasicAuthRequest {

    public static void main(String[] args) {
        try {
            URL url = new URL("http://example.com/resource");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            
            String userCredentials = "user:password";
            String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes(StandardCharsets.UTF_8)));
            connection.setRequestProperty("Authorization", basicAuth);

            int responseCode = connection.getResponseCode();
            System.out.println("รหัสตอบสนอง: " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder response = new StringBuilder();

                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                in.close();

                System.out.println(response.toString());
            } else {
                System.out.println("คำขอ GET ไม่ได้ผล");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ตัวอย่างผลลัพธ์:

รหัสตอบสนอง: 200
{ "message": "นี่คือคำตอบจากทรัพยากรที่ถูกป้องกัน!" }

ค้นดูลึกลงไปกว่านั้น

การรับรองความถูกต้องแบบพื้นฐานมีมาตั้งแต่ช่วงเริ่มต้นของ HTTP มันทำงานโดยการส่งข้อมูลรับรองความถูกต้องที่ถูกเข้ารหัส base64 ในหัวข้อ ทำให้มันง่ายแต่ไม่ค่อยปลอดภัยหากไม่ใช้ HTTPS เนื่องจากข้อมูลรับรองความถูกต้องสามารถถูกถอดรหัสได้อย่างง่ายดาย

ทางเลือกเช่น OAuth เพิ่มอีกชั้นของความปลอดภัยโดยใช้โทเค็นแทน การรับรองความถูกต้องแบบโทเค็นได้รับการชื่นชอบมากขึ้นในปัจจุบันโดยเฉพาะสำหรับ API แบบ RESTful

เมื่อทำการประยุกต์ใช้การรับรองความถูกต้องแบบพื้นฐานใน Java วิธีที่แนะนำตั้งแต่ Java 11 คือใช้คลาสใหม่ HttpClient มันมีความหลากหลายมากขึ้นและรองรับ HTTP/2 ตั้งแต่แรก อย่างไรก็ตามสำหรับความต้องการพื้นฐานหรือระบบเก่า HttpURLConnection ยังคงเป็นตัวเลือกที่เป็นไปได้

ดูเพิ่มเติมที่