外部APIクライアントの作成
組織管理者が鍵ペアを用意し、管理画面で外 部APIクライアントの作成操作を行います。この操作を受けて、metatellの認証基盤にOAuthクライアントが作成されます。管理画面に登録するのは公開鍵だけです。秘密鍵は外部システムで安全に保管してください。
1. 鍵ペアを作成する
外部APIクライアントの認証には、ES256用の鍵ペア(公開鍵・秘密鍵)が必要です。
以下はNode.js環境でjoseを使ってJWKを生成する例です。
mkdir metatell-external-api-client-test
cd metatell-external-api-client-test
npm init -y
npm install jose
generate-keys.mjsを作成します。
import { generateKeyPair, exportJWK } from 'jose'
import { randomUUID } from 'node:crypto'
import { writeFile } from 'node:fs/promises'
const kid = randomUUID()
const { privateKey, publicKey } = await generateKeyPair('ES256', { extractable: true })
const publicJwk = {
...(await exportJWK(publicKey)),
alg: 'ES256',
kid,
use: 'sig'
}
const privateJwk = {
...(await exportJWK(privateKey)),
alg: 'ES256',
kid,
use: 'sig'
}
await writeFile('public-jwk.json', `${JSON.stringify(publicJwk, null, 2)}\n`, { mode: 0o644 })
await writeFile('private-jwk.json', `${JSON.stringify(privateJwk, null, 2)}\n`, { mode: 0o600 })
console.log(`公開鍵をpublic-jwk.jsonに出力しました(kid: ${kid})`)
以下のコマンドでスクリプトを実行します。
node generate-keys.mjs
生成されるファイルは次の2つです。
| ファイル | 用途 | 取り扱い |
|---|---|---|
public-jwk.json | metatell管理画面への登録 | kty、crv、x、y、kid、alg、useを含む |
private-jwk.json | client assertionの署名 | 秘密鍵パラメータdを含むため、外部システムだけで保管する |
秘密鍵を間違って登録しないように注意して下さい。
2. 管理画面でクライアントを作成する
管理画面にログインします。
ログイン後、サイドバーの開発者向け > 外部APIクライアントを開きます。

- クライアントを作成を選択
- 用途が分かる表示名を入力(例:
予約システム連携) public-jwk.jsonの内容を初期公開鍵のJWK (JSON)に貼り付け- 作成を選択

作成後、クライアント詳細画面に次の接続情報が表示されます。

| 項目 | 用途 |
|---|---|
client_id | APIクライアントの識別子 |
issuer | トークンの発行者 |
token endpoint | トークンの取得先 |
realm | 認証基盤上の識別子 |
作成直後に同期状態がpendingまたはfailedの場合は、詳細画面で再同期を実行し、syncedになることを確認します。
3. API権限を設定する
クライアント詳細画面のAPI権限セクションで、外部システムに許可する操作を設定します。
| 権限 | 許可する操作 |
|---|---|
read | ロールの取得 |
write | ロールの変更 |
ルームロールでは、操作を許可する範囲として次の項目を設定します。
- 操作を許可するルーム
- 操作を許可するグループ(グループを対象にする場合)
- ユーザー、グループ、ログインユーザー、未ログインユーザーごとの
readとwrite writeで設定を許可するルームロール

組織ロールでは、ユーザーの組織ロールに対するreadとwriteを設定します。
4. 公開鍵をローテーションする
クライアント詳細画面の公開鍵 > 鍵を追加から、次の公開鍵を追加できます。公開鍵はクライアントあたり最大3本です。
- 新しい鍵ペアを生成
- 新しい公開鍵を管理画面へ追加
- 外部システムを新しい
kidと秘密鍵で署名するように切り替え - 旧公開鍵を管理画面から削除
公開鍵を削除すると、その鍵で署名したclient assertionを検証できなくなります。外部システムの切り替えを確認してから削除してください。