説明
OpenAPI 2.0のsecurityDefinitionsが存在しないか空の場合、ドキュメントには認証方式が定義されていません。認証を使用するAPIでは、実際の方式と必要な認証情報を明記してください。意図的に公開するAPIでは、認証の定義が不要な場合もあります。
想定される影響
認証の定義がないと、開発者やクライアント生成ツールが必要な認証情報を把握できません。仕様書の記載漏れだけで、サーバーにも認証がないとは判断できません。
対処方法
securityDefinitionsに実際の認証方式を定義し、API全体または個別の操作のsecurityから参照してください。方式を定義するだけでは認証要件は適用されません。サーバー側でも要件を適用してください。
例
次の例ではApiKeyAuthを定義し、API全体で必要となるように指定します。
変更前
json
{
"swagger": "2.0",
"info": {
"title": "Simple API Overview",
"version": "1.0.0"
},
"paths": {
"/": {
"get": {
"summary": "List API versions",
"responses": {
"200": {
"description": "ok"
}
}
}
}
},
"securityDefinitions": {}
}
変更後
json
{
"swagger": "2.0",
"info": {
"title": "Simple API Overview",
"version": "1.0.0"
},
"paths": {
"/": {
"get": {
"summary": "List API versions",
"responses": {
"200": {
"description": "ok"
}
}
}
}
},
"securityDefinitions": {
"ApiKeyAuth": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key"
}
},
"security": [
{
"ApiKeyAuth": []
}
]
}