OpenAPI HTTP Basic 인증 보호 설정 점검

HTTP Basic 인증의 자격 증명과 통신 구간을 보호하세요.

설명

OpenAPI 3.0에서 type: http, scheme: basic은 사용자 이름과 비밀번호를 사용하는 Basic 인증을 정의합니다. http라는 분류가 HTTPS를 배제하는 것은 아닙니다. 이 인증을 실제로 사용하는 연결에 전송 보호가 필요합니다.

잠재적 영향

HTTPS 없이 사용하면 Base64로 인코딩된 자격 증명이 노출될 수 있습니다. 비밀번호가 유출되고 계속 유효하다면 계정 권한이 악용될 수 있습니다.

해결 방법

HTTPS와 서버 인증서 검증을 적용하고 비밀번호 노출을 방지하세요. 사용자 권한 위임이나 제한된 토큰 수명이 필요하면 OAuth2 인가 코드 흐름과 PKCE 같은 대안을 검토하세요. 전환 시 실제 인증 처리와 security 참조를 함께 변경하세요.

예시

다음 발췌문은 인증 정의만 OAuth2로 변경합니다. 사용할 스코프와 security 요구사항, 실제 클라이언트·서버 설정은 별도로 적용해야 합니다.

변경 전

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "petstore_auth": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}

변경 후

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "petstore_auth": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://example.com/api/oauth/dialog",
            "tokenUrl": "https://example.com/api/oauth/token",
            "scopes": {
              "read:pets": "read your pets"
            }
          }
        }
      }
    }
  }
}

참조