OpenAPI 3.0 작업의 Basic 인증 전송 보호 점검

Basic 인증을 사용하는 작업의 실제 접속에 HTTPS가 적용되는지 확인하세요.

설명

OpenAPI 3.0 작업에서 Basic 인증을 사용하면 자격 증명을 Base64로 인코딩해 전달합니다. 이 값 자체는 암호화되지 않으므로, HTTPS로 통신 구간을 보호해야 합니다. Basic 인증 설정만으로 HTTP 접속이라고 단정할 수는 없습니다.

잠재적 영향

HTTP로 Basic 자격 증명을 보내면 통신 경로에서 비밀번호를 읽거나 재사용할 수 있습니다.

해결 방법

실제 작업의 서버 주소와 연결을 HTTPS로 구성하고 인증서를 검증하세요. 사용자 권한 위임을 위해 OAuth2로 전환한다면 인가 코드 흐름에 PKCE를 적용하고, 서버의 토큰·권한 검증과 클라이언트를 함께 변경하세요. 토큰 기반 인증도 HTTPS가 필요합니다.

예시

예시는 작업의 HTTP 접속을 HTTPS로 변경하고, Basic 인증 요구사항을 OAuth2로 바꿉니다. 명세와 함께 실제 서버 및 클라이언트도 구성해야 합니다.

변경 전

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "regularSecurity": {
        "type": "http",
        "scheme": "basic"
      }
    }
  },
  "paths": {
    "/": {
      "get": {
        "servers": [
          {
            "url": "http://myapi.com/"
          }
        ],
        "security": [
          {
            "regularSecurity": []
          }
        ]
      }
    }
  }
}

변경 후

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://myapi.com/oauth/authorize",
            "tokenUrl": "https://myapi.com/oauth/token",
            "scopes": {
              "write": "modify objects",
              "read": "read objects"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/": {
      "get": {
        "servers": [
          {
            "url": "https://myapi.com/"
          }
        ],
        "security": [
          {
            "OAuth2": [
              "write",
              "read"
            ]
          }
        ]
      }
    }
  }
}

참조