전역 인증에 OAuth2 비밀번호 흐름 사용

OAuth2 비밀번호 흐름은 클라이언트가 사용자 비밀번호를 직접 처리하게 합니다.

설명

OpenAPI 2.0의 전역 security가 password 흐름을 참조하면 API의 기본 인증 방식이 클라이언트에서 사용자 비밀번호를 직접 받아 전달하는 구조가 됩니다. OAuth 보안 권고인 RFC 9700은 이 흐름을 사용하지 않도록 요구합니다.

잠재적 영향

클라이언트의 침해나 잘못된 자격 증명 처리로 사용자 비밀번호가 유출될 수 있습니다. 여러 단계의 사용자 확인이 필요한 MFA 같은 인증 방식에도 적합하지 않습니다.

해결 방법

사용자가 참여하는 인증은 PKCE를 적용한 인가 코드 흐름으로 전환하세요. OpenAPI 2.0에서는 flow: accessCode와 HTTPS 인가·토큰 URL을 지정합니다. 실제 클라이언트와 인증 서버를 함께 변경한 뒤 비밀번호 흐름을 비활성화하세요.

예시

예시는 전역 oauth2 요구사항을 유지하면서 흐름을 변경합니다. URL은 실제 제공자의 주소로 바꾸고, PKCE는 클라이언트와 인증 서버에 별도로 적용하세요.

변경 전

json
{
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "password",
      "tokenUrl": "https://api.example.com/oauth/token",
      "scopes": {}
    }
  },
  "security": [
    {
      "oauth2": []
    }
  ]
}

변경 후

json
{
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "accessCode",
      "authorizationUrl": "https://api.example.com/oauth/authorize",
      "tokenUrl": "https://api.example.com/oauth/token",
      "scopes": {}
    }
  },
  "security": [
    {
      "oauth2": []
    }
  ]
}

참조