説明
OpenAPI 3.0の操作でBasic認証を使うと、認証情報をBase64でエンコードして送信します。この値自体は暗号化されていないため、HTTPSで通信を保護する必要があります。Basic認証の設定だけで、HTTP接続だと判断することはできません。
想定される影響
Basic認証情報をHTTPで送信すると、通信経路上でパスワードを読み取られたり、再利用されたりするおそれがあります。
対処方法
実際の操作の接続先と通信にHTTPSを設定し、証明書を検証してください。ユーザーの権限委譲のためにOAuth2へ移行する場合は、PKCEを使う認可コードフローを採用し、サーバー側のトークン・権限検証とクライアントを合わせて変更してください。トークン認証にもHTTPSが必要です。
例
次の例では、操作の接続をHTTPからHTTPSに変更し、認証要件をBasicからOAuth2に切り替えます。仕様書と合わせて実際のサーバーやクライアントも設定してください。
変更前
json
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"regularSecurity": {
"type": "http",
"scheme": "basic"
}
}
},
"paths": {
"/": {
"get": {
"servers": [
{
"url": "http://myapi.com/"
}
],
"security": [
{
"regularSecurity": []
}
]
}
}
}
}
変更後
json
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"OAuth2": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://myapi.com/oauth/authorize",
"tokenUrl": "https://myapi.com/oauth/token",
"scopes": {
"write": "modify objects",
"read": "read objects"
}
}
}
}
}
},
"paths": {
"/": {
"get": {
"servers": [
{
"url": "https://myapi.com/"
}
],
"security": [
{
"OAuth2": [
"write",
"read"
]
}
]
}
}
}
}