認証
ChatWalaʻau には、補い合う2つの認証の仕組みがあります。呼び出し元ごとに発行する API キー(Bearer トークン)と、 クラウドでの利用向けの任意の Web サインイン(ユーザー名とパスワード)です。
v0.215.0 の破壊的変更
.env の API_KEY と RESPONSES_API_KEY は読まれなくなりました。値が残っていると、起動時の警告でその名前を出し、
値は無視します。これらを使っていた呼び出し元は、管理キー(下記)を渡すまで 401 になります。古い値の取り込みはありません。
API キー
呼び出し元ごとに専用のキーを渡します。キーは、名前、1つのスコープ、任意の有効期限、有効/無効の切り替えを持ちます。
| スコープ | 呼べるもの | 渡す相手 |
|---|---|---|
responses | POST /v1/responses だけ | 会社サイトのサーバー、外部アプリ |
api | キー管理以外のすべての API(/api/*、/ag-ui/、WebSocket、/v1/responses) | CLI、自動化 |
admin | キー管理を含むすべて | キーを管理する必要がある場合だけ |
キーを作る
- API Keys 画面: サイドバー下部の鍵のアイコン(広い画面のみ)から開きます。ブラウザでサインインしているときか、同じマシンで使っているときに 表示されます。ここでキーの発行、編集、無効化 / 有効化、再発行、削除ができ、各操作の間はスピナーが表示されます。
- サーバー上の CLI(Web サインインのないサーバーで最初のキーを作る方法でもあります):
chatwalaau keys create --name company-site-bff --scope responses --expires-days 90
chatwalaau keys list
chatwalaau keys disable <id> # 残したまま拒否する
chatwalaau keys enable <id>
chatwalaau keys reissue <id> # 新しい秘密の値。古い値はすぐ使えなくなる
chatwalaau keys delete <id>
秘密の値(cwk_<id>_...)は、発行時と再発行時に一度だけ表示されます。保存されるのは SHA-256 のハッシュだけで、
API_KEYS_FILE で指定したファイルに入り、その隣にすべての変更の監査ログが残ります。
API_KEYS_FILE=api_keys.jsonc # 既定値。Azure App Service では /home の下のパスにする
# APP_REQUIRE_AUTH_ON_LAN=true # 既定値: キーのない LAN からのアクセスを拒否する
変更は再起動なしで、次のリクエストから効きます。api_keys.jsonc とその監査ログは、Git、Docker のビルド、公開リポジトリへの同期の対象外です。
どこで何が受け付けられるか
同じマシンのクライアント(127.0.0.1、::1、localhost)は、キーなしで書き込みのエンドポイントと AG-UI のストリームを通ります。
APP_HOST=0.0.0.0 でも、localhost での開発は設定不 要のままです。
| クライアントのアドレス | APP_REQUIRE_AUTH_ON_LAN | 有効なキーか Web サインイン | /api/* と POST /ag-ui/ の結果 |
|---|---|---|---|
| ループバック | 任意 | 任意 | 許可 |
| LAN | false | 任意 | 許可(運用者が明示的に開放) |
| LAN | true | どちらもない | 503 |
| LAN | true | あり | api / admin のキー(またはサインインの Cookie)が必要 |
/v1/responsesは、クライアントのアドレスに関わらず、常にキー(どのスコープでも可)が必要です。有効なキーがなければ 503 です。- 存在しない、期限切れ、無効化されたキーは
401、スコープが足りないキーは403です。 - キー管理は、Web サインイン、同じマシン、
adminのキーのどれかでのみ使えます。APP_REQUIRE_AUTH_ON_LAN=falseの公開モードでは 使えず、自分より上のスコープは付与できません。 APP_REQUIRE_AUTH_ON_LANは.envに残ります。API Keys 画面では読み取り専用で表示されます。
キーごとの上限
v0.216.0 から、キーごとに /v1/responses の上限を持たせられます。API Keys 画面の
Limits for /v1/responses で設定します。
| 項目 |
|---|