설명
OpenAPI 2.0 작업의 security가 Basic 인증 정의를 참조하면 해당 작업에서 사용자 이름과 비밀번호를 사용하는 인증이 지정됩니다. Basic 인증 자체는 전송 구간을 암호화하지 않습니다.
잠재적 영향
HTTPS 없이 자격 증명을 전송하면 통신 경로에서 노출될 수 있습니다. 유출된 비밀번호가 계속 유효하다면 공격자가 해당 계정의 권한으로 재사용할 수 있습니다.
해결 방법
실제 작업의 접속 주소에 HTTPS와 인증서 검증을 적용하세요. 사용자 권한 위임으로 전환하려면 OAuth2 인가 코드 흐름과 PKCE를 구성하고, 작업의 security가 정의된 스코프를 참조하도록 맞추세요. 서버에서도 필요한 권한을 검증해야 합니다.
예시
예시는 GET /을 OAuth2로 전환하며 요구 스코프를 실제 정의된 write:api와 read:api에 맞춥니다. 실제 권한 요구사항에 필요한 스코프만 사용하세요.
변경 전
json
{
"swagger": "2.0",
"paths": {
"/": {
"get": {
"security": [
{
"oAuth2AuthCodeNeg2": []
}
]
}
}
},
"securityDefinitions": {
"oAuth2AuthCodeNeg2": {
"type": "basic"
}
}
}
변경 후
json
{
"swagger": "2.0",
"paths": {
"/": {
"get": {
"security": [
{
"oAuth2AuthCodeNeg2": [
"write:api",
"read:api"
]
}
]
}
}
},
"securityDefinitions": {
"oAuth2AuthCodeNeg2": {
"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"
}
}
}
}