기본 인증을 사용한 HTTP 요청 보내기

Java:
기본 인증을 사용한 HTTP 요청 보내기

How to: (어떻게 하나요?)

Java에서 실행 가능한 기본 인증을 포함한 HTTP 요청을 보내는 예제입니다. 단순함에 집중합니다.

import java.net.URL;
import java.net.HttpURLConnection;

public class HttpBasicAuth {
    
    public static void main(String[] args) {
        try {
            URL url = new URL("http://example.com/api/data");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            // 인코딩된 사용자 이름과 비밀번호
            String encodedCredentials = Base64.getEncoder().encodeToString("username:password".getBytes());
            
            // 기본 인증 추가
            connection.setRequestProperty("Authorization", "Basic " + encodedCredentials);

            // 요청을 얻고 출력합니다
            connection.setRequestMethod("GET");
            System.out.println("Response Code: " + connection.getResponseCode());
            System.out.println("Response Message: " + connection.getResponseMessage());
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과:

Response Code: 200
Response Message: OK

Deep Dive (심긴 탐험)

HTTP 기본 인증은 RFC 7617에 정의된 가장 간단한 인증 메커니즘입니다. username:password 형식을 Base64로 인코딩하여 Authorization 헤더에 추가합니다. 이 방식은 HTTPS와 함께 사용할 때 더 안전합니다.

대안으로, OAuth 같은 보다 복잡한 인증 방식이 있습니다. OAuth는 토큰 기반이며 권한 부여를 통해 더 세밀한 접근 제어를 허용합니다.

Java 11부터 java.net.http 패키지가 소개되었고, HttpClient, HttpRequest, HttpResponse 클래스를 이용해 HTTP 요청을 더 쉽게 처리할 수 있습니다. 이는 HttpURLConnection에 비해 더 modern하고 functional한 API를 제공합니다.

See Also (더 보기)