설명
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"
}
}
}
}
}
}
}