C#에서 API 인증 이해하기 : 마스터하기

발행: (2026년 1월 8일 오후 05:47 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

기본 인증 (Username & Password)

기본 인증은 사용자 이름과 비밀번호를 Base64로 인코딩하여 전송합니다. 구현이 간단하지만 HTTPS 위에서만 사용해야 하며, 일반적으로 내부 또는 테스트 API에 적합합니다.

using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

// Create the client
var client = new HttpClient();

// Encode credentials
var byteArray = Encoding.ASCII.GetBytes("username:password");
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

// Send request
var response = await client.GetAsync("https://api.example.com/data");

베어러 토큰 인증 (JWT)

베어러 토큰(예: JWT)은 무상태이며 확장성이 뛰어나 현대 REST API에 이상적입니다.

using System.Net.Http;
using System.Net.Http.Headers;

// Create the client
var client = new HttpClient();

// Add the JWT as a Bearer token
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", "your_jwt_token_here");

// Send request
var response = await client.GetAsync("https://api.example.com/userinfo");

OAuth 베어러 토큰

OAuth 제공자(Google, GitHub, Facebook 등)는 베어러 토큰으로 전송되는 액세스 토큰을 발급합니다. 이 방식은 서드파티 통합에 널리 사용됩니다.

using System.Net.Http;
using System.Net.Http.Headers;

// Create the client
var client = new HttpClient();

// Use the OAuth access token
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", "access_token_from_oauth");

// Send request
var response = await client.GetAsync("https://api.github.com/user");

HMAC 서명 인증

HMAC 서명은 공유 비밀키를 사용해 요청 데이터를 해시함으로써 인증과 무결성을 보장합니다. 이 방법은 시스템 간 보안 통신에 적합합니다.

using System;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;

// Shared secret
var key = "secretkey";
var message = "GET:/api/data";

// Compute HMAC SHA256 signature
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(message)));

// Create the client
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Signature", signature);

// Send request
var response = await client.GetAsync("https://api.example.com/data");

보안 고려 사항

  • 항상 HTTPS를 사용하여 자격 증명이나 토큰을 전송하세요.
  • 평문 비밀번호를 저장하지 마세요; 프로덕션에서는 토큰 기반 방식을 선호합니다.
  • 비밀키와 토큰을 정기적으로 교체하여 노출 위험을 줄이세요.
  • HMAC을 사용할 경우 서버 측에서 서명을 검증하여 요청 무결성을 확인하세요.
Back to Blog

관련 글

더 보기 »

C#에서 RTF를 PDF로 변환하기

개요 RTF(Rich Text Format)는 문서 편집 및 데이터 교환에 널리 사용되는 크로스‑플랫폼 형식입니다. 반면 PDF는 문서 배포에 이상적입니다.