説明
OpenAPI 2.0の操作のsecurityがBasic認証定義を参照すると、その操作にユーザー名とパスワードによる認証が指定されます。Basic認証自体には通信を暗号化する機能はありません。
想定される影響
HTTPSを使わずに送信した認証情報は、通信経路で漏えいするおそれがあります。盗まれたパスワードが有効な間は、攻撃者がそのアカウントの権限で再利用できる可能性があります。
対処方法
実際の操作の接続先にHTTPSと証明書検証を適用してください。権限委譲に移行する場合は、PKCEを使うOAuth2認可コードフローを設定し、操作の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"
}
}
}
}