説明
OpenAPI 2.0のsecurityDefinitionsにtype: basicを指定すると、再利用できるBasic認証方式を定義できます。定義だけではすべての操作に適用されず、全体または操作ごとのsecurityから参照する必要があります。
想定される影響
Basic認証はユーザー名とパスワードをBase64でエンコードして送信します。エンコードは暗号化ではないため、HTTPSなしでは認証情報が漏えいするおそれがあり、盗まれたパスワードは再利用される可能性があります。
対処方法
Basic認証を使う接続には、HTTPSとサーバー証明書の検証を適用してください。ユーザーの権限委譲が必要なAPIでは、PKCEを使うOAuth2認可コードフローなどを検討し、移行時に実際のクライアント、サーバー、securityの参照を合わせて変更してください。
例
次の例では、認証方式の名前を保持してOAuth2に変更します。使用箇所のsecurity参照と実際の認可サーバーは別途設定してください。
変更前
json
{
"swagger": "2.0",
"securityDefinitions": {
"petstore_auth": {
"type": "basic",
"description": "Basic authentication"
}
}
}
変更後
json
{
"swagger": "2.0",
"securityDefinitions": {
"petstore_auth": {
"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"
}
}
}
}