비어 있는 작업별 security 배열

작업별 security가 빈 배열이면 해당 작업은 전역 인증 요구사항을 상속하지 않습니다.

설명

개별 작업의 security: []는 전역 인증 요구사항을 해제하고 그 작업에 인증을 요구하지 않는다고 선언합니다. 공개 작업에는 사용할 수 있지만, 보호해야 할 작업에 실수로 적용하면 명세가 실제 정책과 어긋납니다.

잠재적 영향

전역 인증 정책만 확인하면 특정 작업의 공개 예외를 놓칠 수 있습니다. 명세를 따르는 클라이언트는 해당 작업에 인증 정보를 보내지 않을 수 있습니다.

해결 방법

전역 정책을 적용하려면 작업의 빈 security 항목을 제거하세요. 별도 요구사항이 필요하면 작업의 security에 정의된 방식과 필요한 범위를 지정하세요. 빈 배열은 의도한 공개 작업에만 남기고 서버 정책도 확인하세요.

예시

예시는 읽기 작업의 빈 배열을 OAuth2의 read 범위를 요구하도록 바꿉니다. 예시 OAuth2 URL은 실제 제공자의 주소로 바꾸세요.

변경 전

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "get": {
        "security": [],
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "security": [
    {
      "OAuth2": [
        "read"
      ]
    }
  ],
  "info": {
    "title": "Simple API overview",
    "version": "1.0.0"
  },
  "components": {
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://example.com/oauth/authorize",
            "tokenUrl": "https://example.com/oauth/token",
            "scopes": {
              "read": "Read API versions"
            }
          }
        }
      }
    }
  }
}

변경 후

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "get": {
        "security": [
          {
            "OAuth2": [
              "read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "security": [
    {
      "OAuth2": [
        "read"
      ]
    }
  ],
  "info": {
    "title": "Simple API overview",
    "version": "1.0.0"
  },
  "components": {
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://example.com/oauth/authorize",
            "tokenUrl": "https://example.com/oauth/token",
            "scopes": {
              "read": "Read API versions"
            }
          }
        }
      }
    }
  }
}

참조