メインコンテンツまでスキップ

API のセキュリティ保護

@secureApi decorator を使用して、API connector へのアクセスを保護および管理します。

この decorator を使用して、各 endpoint を個別に保護することも、connector 内のすべての endpoint を保護することもできます。

@secureApi decorator を使用すると、decorator が付与された関数は ApiCallContext 型(Python では dict)のパラメーターを受け取ります。これは、API call の完全な context を提供します。これには、endpoint ID、server URL、HTTP method、request parameters などの詳細が含まれます。

security function は boolean を返します。true は request を許可し、false は拒否します。

Note

Squid は 2 種類の API connector をサポートしており、どちらも同じ @secureApi decorator を使用して保護できます。 この 2 種類は、OpenAPI(OpenAPI document を使用して提供)と通常の REST API です。

特定の endpoint を保護する

Backend code
import { secureApi, SquidService, ApiCallContext } from '@squidcloud/backend';

export class ExampleService extends SquidService {
@secureApi('usersApi', 'updateUserSalary')
secureUpdateUserSalaryEndpoint(context: ApiCallContext): boolean {
// TODO - Implement your security logic here
}
}

connector 内のすべての endpoint を保護する

Backend code
import { secureApi, SquidService, ApiCallContext } from '@squidcloud/backend';

export class ExampleService extends SquidService {
@secureApi('usersApi')
secureUsersApi(context: ApiCallContext): boolean {
// TODO - Implement your security logic here
}
}

上記の code sample は、@secureApi decorator を使用して API connector を保護する方法を示しています。この decorator は 2 つの parameter を取ります。

  1. API connector の ID。これは Squid Console で確認できます。
  2. (Optional)保護する endpoint の名前。

endpoint の名前を指定しない場合、@secureApi decorator は connector 内のすべての endpoint を保護します。

TypeScript では、context は型付けされた ApiCallContext object です。Python では、security function は同じ context を dict として受け取り、integrationIdendpointIdurlmethodbody などの key を含みます。

Note

Python では、security function で context parameter を常に宣言してください。使用しない場合でも必要です。 TypeScript とは異なり、Python は余分な call arguments を無視しません。