APIを使用したサイト埋め込み
概要
- APIユーザーは APIキー を持ち、アクセス許可ドメイン で利用元ドメインを制限できます
- 用途に応じて API種類(
readonly/fullaccess)を選択。閲覧のみならreadonly推奨 - 認証方式は「APIキー」または「JWT」の2種類(どちらか一方でOK)
準備
- 既存のデフォルトAPIユーザーを利用(初期アカウント発行時に自動作成)
- 必要なら
/filmaadmin/user/newで新規APIユーザーを作成(「APIユーザー」をON)
- 必要なら
/filmaadmin/apisettings/edit/:user_idを開き、「アクセス許可ドメイン」に自サイトのドメイン名を登録(サブドメイン可)- URLで入力しても保存時にドメイン名(ホスト部)へ自動変換されます
example.comと入力すると、その配下のサブドメイン(www.example.com / app.example.com など)も許可されます- 特定のサブドメインのみ許可したい場合は
app.example.comのようにサブドメインまで入力してください - 未設定ドメインからのアクセスは拒否されます
実装フロー(例)
- APIキーとエンドポイントで再生用URL/トークンを取得
- 自サイトのプレイヤーへURL/トークンを設定
- ドメイン照合エラーの場合は、許可ドメイン設定を確認
認証方式の選び方(非エンジニア向け)
どちらの方式でも再生は可能です。用途に合わせて選んでください。
A. APIキーを直接使う
- 使い方: リクエストで
X-Api-Keyヘッダー(推奨)または?api_key=を付けて呼び出します - ドメイン制限: アクセス許可ドメインのチェックが働きます(未設定だと自社サイトから再生できません)
- 長所
- 導入が簡単(追加の発行手順が不要)
- ドメインでのアクセス制限が効く(Referer/Origin)
- 短所
- APIキーが長期固定になりがちで、漏えい時のリスクが高い
- フロント側の実装でキーを扱う場合は取り扱いに注意(直接埋め込みは避け、サーバー経由に)
B. JWTを使う
- 使い方: まずAPIキーで「短期のJWTトークン」を発行し、そのJWTを使って再生用URLを呼び出します
- ドメイン制限: 適用されません(JWTの有効性で保護)。どのドメインからでもアクセス可
- 長所
- 短期の使い捨てトークンで安全(期限切れで自動無効化、Cookie運用も可能)
- ファイル単位(
mediafile_id)で限定したJWTも発行できる
- 短所
- 初回に「JWT発行」のひと手間が必要
- ドメイン制限が効かないため、トークンの保管と配布に注意(短寿命運用が前提)
迷ったら…
- 「まずは簡単に」→ APIキーで開始(必ずアクセス許可ドメインを設定)
- 「より安全に」→ 短期JWTを採用(必要に応じてファイル限定JWT)
ライセンスAPIについて(重要)
DRM再生時はプレイヤーがライセンス取得(Widevine/FairPlay)を行います。 ライセンス要求にも APIキー または JWT が必要です。
- APIキー運用: ライセンスURLに
api_keyを付与する必要があります - JWT運用: ライセンスURLに
jwtを付与する必要があります
プレイヤー埋め込みHTML / player_url を利用している場合は、
URLに含まれるJWT(またはAPIキー)のみで動作します。
推奨アーキテクチャ(JWTのバックエンド発行)
JWT はできるだけ自社バックエンドで発行・配布する運用を推奨します。APIキーをフロントに露出させず、短期トークンで安全に配信できます。
基本フロー
- フロント → 自社バックエンド: 対象メディアIDを渡して JWT を要求
- バックエンド → Filma API: APIキーで
POST /filmaapi/token(必要に応じてmediafile_id指定、expires_inで短期化) - バックエンド → フロント: 短期JWT(または埋め込みHTML/URL)を返却
- フロント: JWT 付きURLでプレイヤーを初期化
ポイント(運用)
- 有効期限は短め(例: 数分〜15分)を基本に、必要時に自動リフレッシュ
- 外部共有や限定公開は「ファイル限定JWT(
mediafile_id)」で最小権限 - バックエンドで発行ログ/失効ポリシーを持ち、問題時は短期運用+差し替えで対応
- JWTはドメイン制限が効かないため、短寿命+限定スコープで担保(APIキーは常にバックエンド保管)
画面から得られる情報(管理画面とAPIの対応)
- 管理画面の「埋め込みHTML」でコピーできるコードは、プレイヤー用JS/CSS込みの完全版です
- APIでも同等の「埋め込みHTML(完全版/シンプル版)」が取得できます(
embed_code/simple_embed_code) GET /filmaapi/storage/{id}やplayer_dataのplayer_urlには mediafile_id 付きJWT が含まれます- タグ/カテゴリなど管理画面のメタ情報は
user_metadataとして取得できます
技術メモ: 認証の優先順位や詳細は Filma API 仕様書 を参照してください(非エンジニアの方は本ページの方針だけ把握で十分です)。 参照先: Filma API 仕様書
注意
fullaccessは強力な権限です。キー管理(保護・ローテーション)を徹底してください
次にやること / 関連
- HTML埋め込みへ戻る: 埋め込みHTML
- 期限付きURLの発行・管理: 期限付きURLの発行