説明
OpenAPI 3.0のcomponents.securitySchemesにBasic認証を定義しても、すべての操作に自動で適用されるわけではありません。その定義を参照するsecurity設定が使用箇所を指定します。type: httpはHTTP認証の分類であり、HTTPSを使うかどうかは接続先と実際の接続設定で決まります。
想定される影響
暗号化されていない接続でBasic認証情報を送信すると、ユーザー名やパスワードが漏えいするおそれがあります。盗まれたパスワードが再利用されるリスクもあります。
対処方法
Basic認証を使う接続にはHTTPSと証明書検証を適用してください。ユーザーの権限委譲が必要なら、PKCEを使うOAuth2認可コードフローを検討し、実際の認可サーバー、クライアント、全体または操作ごとのsecurityを合わせて設定してください。
例
変更前はHTTPの接続先とBasic認証を定義していますが、それを適用するsecurity要件はありません。変更後はHTTPSとOAuth2を指定し、全体の認証要件も追加しています。
変更前
json
{
"openapi": "3.0.0",
"servers": [
{
"url": "http://kicsapi.server.com/"
}
],
"components": {
"securitySchemes": {
"regularSecurity": {
"type": "http",
"scheme": "basic"
}
}
}
}
変更後
json
{
"openapi": "3.0.0",
"servers": [
{
"url": "https://kicsapi.server.com/"
}
],
"components": {
"securitySchemes": {
"OAuth2": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://kicsapi.com/oauth/authorize",
"tokenUrl": "https://kicsapi.com/oauth/token",
"scopes": {
"write": "modify objects",
"read": "read objects"
}
}
}
}
}
},
"security": [
{
"OAuth2": [
"write",
"read"
]
}
]
}