설명
개별 작업의 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"
}
}
}
}
}
}
}