OpenAPI 2.0의 Basic 인증 정의 점검

Basic 인증 정의의 실제 사용 여부와 자격 증명 보호 방식을 확인하세요.

설명

OpenAPI 2.0의 securityDefinitions에 type: basic을 두면 재사용할 Basic 인증 방식이 정의됩니다. 정의만으로 모든 작업에 적용되지는 않으며, 전역 또는 작업별 security에서 참조해야 합니다.

잠재적 영향

Basic 인증은 사용자 이름과 비밀번호를 Base64로 인코딩해 전달합니다. 인코딩은 암호화가 아니므로 HTTPS 없이 사용하면 자격 증명이 노출될 수 있고, 유출된 비밀번호는 재사용될 수 있습니다.

해결 방법

Basic 인증을 사용하는 연결에 HTTPS와 서버 인증서 검증을 적용하세요. 사용자 권한 위임이 필요한 API는 PKCE를 적용한 OAuth2 인가 코드 흐름 같은 대안을 검토하고, 전환 시 실제 클라이언트·서버와 security 참조를 함께 변경하세요.

예시

예시는 같은 이름의 인증 정의를 OAuth2로 변경합니다. 사용 대상의 security 참조와 실제 인증 서버 설정은 별도로 구성해야 합니다.

변경 전

json
{
  "swagger": "2.0",
  "securityDefinitions": {
    "petstore_auth": {
      "type": "basic",
      "description": "Basic authentication"
    }
  }
}

변경 후

json
{
  "swagger": "2.0",
  "securityDefinitions": {
    "petstore_auth": {
      "type": "oauth2",
      "flow": "accessCode",
      "authorizationUrl": "https://api.my.company.com/oauth/authorize",
      "tokenUrl": "https://api.my.company.com/oauth/token",
      "scopes": {
        "write:api": "modify apis in your account",
        "read:api": "read your apis"
      }
    }
  }
}

참조