kisenon

認証

サインイン、組織、API キー、そして CLI のループバック OAuth フロー。

Kisenon には 2 つの認証方法があります。

  • Web サインイン — コンソール上で NextAuth を介した Google または GitHub の OAuth。
  • API キー — 任意の HTTP クライアント(keon を含む)が Bearer 資格情報 として提示できる nsk_… トークン。

同じキーで CLI、CI、単発の curl 呼び出しを動かせます。

Web サインイン

kisenon.com を開き、Sign in をクリックします。Google または GitHub を選びます。NextAuth が OAuth のやり取りを処理し、その後 POST /v1/auth/exchange を介してプロバイダの id トークンをコントロールプレーン の JWT と交換します。この cp 署名済み JWT が、以降のすべてのコンソールリクエスト が携える資格情報です。

JWT は短命で、発行からおよそ 15 分で失効します。アクティブな間は、NextAuth が現在 の JWT を POST /v1/auth/refresh に再提示することでバックグラウンドで更新し、新 しいものを発行します。更新用の資格情報は JWT そのもので、サインインから 12 時間の ウィンドウ内で有効です。そのウィンドウが過ぎると、次のリクエストでサインインへ リダイレクトされます。

アルファ期間中のアクセス

サインインはゲートされています。アルファの許可リストに載っているメールアドレス のみが交換を完了できます。リストにないアカウントは /v1/auth/exchange から 403 email_not_allowed を受け取り、セッションを得られません。許可リストに載って いてサインイン済みだが、まだ承認されていないアカウントは pending 状態に入りま す。コンソールはそれらを /pending へリダイレクトし、オペレーターがアカウントを 承認するまで、コントロールプレーンはゲート対象の API 呼び出しに 403 alpha_pending で応答します。応募については アルファアクセス を参照してください。

組織とロール

アイデンティティは組織を起点とします。すべてのセッションは アクティブな組織 とそこでのあなたの ロール(例えば ownermember)を携えます。cp の JWT は両方をエンコードし、コントロールプレーンは更新のたびにあなたのロールを再読み取り します。個人サインアップには個人組織が自動的に付与され、招待されたユーザーは初回 サインイン時にチーム組織に入ります。

複数の組織に所属している場合、コンソール(サインイン後レイアウトの上部)の 組織スイッチャー がロールバッジ付きでそれらを一覧表示します。1 つを選ぶと /api/auth/switch-org に POST され、それが cp の /v1/auth/switch-org にプロキシ して、新しい組織にスコープされた新しい JWT をセッションに差し込みます。切り替え後 のすべてのコンソールリクエストは、選択した組織内で動作します。

組織とロールの仕組みについては 組織 を、チームメンバーの 追加については 招待 を参照してください。

API キー

API キーは組織にスコープされた資格情報です。各キーは次のとおりです。

  • 形式は nsk_<random> で、作成時に一度だけ表示されます。
  • 保存時にハッシュ化されます。作成後に平文を復元することはできないため、今すぐ 保存するか、後でローテーションしてください。
  • 1 つの組織に属し、その中であなたのアイデンティティとして動作します。
  • 他のキーに影響を与えることなく、いつでも失効させられます。

キーの管理はコンソールの Settings → API keys で行います。各 行にはキーの名前、id、作成日、最終使用日時が表示されます。作成では名前を取り、 シークレットを一度だけ表示します。失効とリネームはインラインで行えます。

スコープとケイパビリティ

コントロールプレーンは各キーを 2 つの観点でスコープします。

  • スコープの種類orgproject、または branch。組織スコープのキーは組織 内のすべてに到達します。プロジェクトまたはブランチスコープのキーは、指定された プロジェクトまたはブランチに制限され、それ以外のリソースへのリクエストは 403 scope_insufficient を受け取ります。
  • ケイパビリティread または read_writeread キーは、変更を伴う呼び 出しでは拒否されます。

現在コンソールから作成されるキーは、read_write ケイパビリティを持つ 組織スコープ です。UI にはまだスコープ選択がありません。より狭い プロジェクト/ブランチスコープと read ケイパビリティは、cp の /v1/api-keys/ エンドポイントに scopecapability を直接 POST することで利用できます。

CLI のループバック OAuth

keon login では API キーの貼り付けを求められません。代わりにループバック OAuth フローを実行します。

  1. CLI がランダムな高位ポートでローカル HTTP リスナーを起動します。
  2. 使い捨ての state トークンとループバックのリダイレクト URL とともに、ブラウザを https://kisenon.com/cli/authorize?... へ開きます。
  3. あなたがサインイン(または既にサインイン済み)し、Authorize をクリックします。
  4. コンソールが短命のコードとともにループバック URL へリダイレクトします。
  5. CLI が POST /v1/cli/exchange でそのコードを、新たに発行された API キーと交換 します。
  6. キーはモード 0600~/.config/keon/credentials.json に永続化されます。

フローの後、keon whoami でキーが結び付いていることを確認できます。

keon login
keon whoami

CLI は OAuth コード、state、プロバイダ側のトークンを一切保存しません。保存するのは 結果として得られた API キーのみです。そのキーはいつでもコンソールからローテーション または失効させられます。

ログアウト

keon logout はサーバー上のローカル API キーを失効させ、資格情報ファイルを削除しま す。ログアウト後、同じ keon login フローで新しいキーが発行されます。古い資格情報を 再有効化することはできません。

keon logout

コンソールのサインアウトはブラウザセッションをクリアし、ランディングページへリダイ レクトします。CLI で発行した API キーは失効させません。それらを個別に失効させるには Settings → API keys を使ってください。

任意のクライアントからの Bearer 認証

HTTP を話せるクライアントなら何でもコントロールプレーンに到達できます。

curl -H "Authorization: Bearer $KISENON_API_KEY" \
  https://api.test.kisenon.com/v1/projects

ベアラートークンは API キー(nsk_…)か、/v1/auth/exchange で発行された cp 署名 済み JWT のいずれかです。組織スコープのエンドポイントでは両者は等価です。

関連

  • 組織 — 組織、ロール、切り替え。
  • 招待 — 組織へのチームメンバーの追加。
  • CLI — インストール、ログイン、よく使うコマンド。
  • セキュリティ — 開示ポリシー。
  • FAQ — よくある質問への簡潔な回答。