6. 認証・セキュリティ

6.1. カスタム API に対するアクセス制限

カスタム API に対する認証はアプリケーションキー認証、 アクセス制限の方法としては ACL を使用する方法と ユーザコード側でアクセスチェックを行う方法の2通りが提供されます。

6.1.1. アプリケーションキー認証

API Gateway の認証は、BaaS の他 REST API と同様、X-Application-Id, X-Application-Key ヘッダによるアプリケーションキー認証となります。

アプリケーションキー認証は原則必須ですが、ベンダ拡張 x-auth-appkey を false に指定することで無効化できます。詳細は API Gateway 開発ガイド の「Swagger ベンダ拡張リファレンス」を参照ください。

6.1.2. ACL

Swagger API 定義に ACL を記述することでアクセス制限を行うことが可能です。 具体的な方法は API Gateway 開発ガイドの 認証・セキュリティ を参照してください。

6.1.3. ユーザコード側でのアクセスチェック

ハンドラに引き渡される context.Nebula にはカスタム API 呼び出し時のユーザ情報 (セッショントークン)が格納されていますので、これを使ってアクセス権限チェックを行うことが できます。

以下に例を示します。

exports.myhandler = (event, context) => {
    const Nebula = context.Nebula;

    // ログインしているかチェックしたい場合
    if (!Nebula.isLoggedIn()) {
        context.fail(new Error("Not logged in"));
    }

    // 所属グループをチェックする場合
    const groups = Nebula.User.current().groups;
    if (groups.indexOf("admin") < 0) {
        context.fail(new Error("Unauthorized"));
    }

    ...

なお、BaaS API を呼び出す場合は BaaSサーバ側で ACL のチェックが行われますので、 この権限チェックで十分な場合はユーザコード側でのアクセス権チェックは不要です。