OpenAPI 3.0의 OAuth2 authorizationUrl 잘못된 설정

OpenAPI 3.0의 OAuth2 인가 URL이 올바른 인증 서버 엔드포인트를 가리키는지 확인합니다.

설명

OpenAPI 3.0의 OAuth2 authorizationCode와 implicit 흐름은 authorizationUrl로 로그인 및 권한 동의 화면을 지정합니다. 잘못된 주소를 사용하면 정상적인 인가 절차를 완료하지 못할 수 있습니다.

잠재적 영향

문서를 사용하는 클라이언트와 테스트 도구에서 로그인이나 동의 절차가 실패할 수 있습니다. 주소가 신뢰할 수 없는 서버를 가리키면 인증 정보가 노출될 위험도 있습니다.

해결 방법

components.securitySchemes의 해당 흐름에 신뢰할 수 있는 HTTPS 인가 URL을 지정하십시오. URL에 프래그먼트를 넣지 말고 인증 제공자의 호스트와 경로를 확인하십시오. 인가 코드 흐름은 PKCE와 함께 사용하십시오.

예시

변경 전 URL의 #@evil.com/oauth/authorize는 프래그먼트입니다. 인가 엔드포인트 URL에는 프래그먼트를 사용할 수 없습니다. 변경 후에는 올바른 서버의 인가 경로를 지정합니다.

변경 전

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "petstore_auth": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://api.invalid.company.com#@evil.com/oauth/authorize",
            "tokenUrl": "https://api.my.company.com/oauth/token",
            "scopes": {
              "write:api": "modify apis in your account",
              "read:api": "read your apis"
            }
          }
        }
      }
    }
  }
}

변경 후

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "petstore_auth": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "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"
            }
          }
        }
      }
    }
  }
}

참조