idp-server Client Instance 管理 API (1.0.0)
Download OpenAPI specification:Download
Client Instance(Attestation-Based Client Authentication の自己署名モードで使う、アプリのインスタンスごとの鍵)を管理する API です。
Client Instance は、client_attestation_trust_source = registered_instance_key のクライアントで、
アプリのインストールごとに登録する鍵(Client Instance Key)です。アプリはこの鍵で Client Attestation JWT を自己署名し、
kid にインスタンスの id を入れます。詳しくは
Attestation-Based Client Authentication を参照してください。
インスタンスはふつう、アプリ自身が登録エンドポイント(POST /{tenant-id}/v1/client-instances)で登録します。
この API は、運用側での検索・失効・削除と、アプリからの登録を使わない場合の登録に使います。
テナント直下のリソース
インスタンスはクライアントの下ではなくテナントの直下に置いています。運用で手元にあるのは利用者・鍵・証明書のシリアルで、
どのクライアントのものかは調べるまで分からないためです。id は UUID で、テナント内で 1 件に決まります。
client_id は登録時のボディと、検索条件で指定します。
失効と削除
失効(POST .../{id}/revoke) |
削除(DELETE .../{id}) |
|
|---|---|---|
| 意味 | 信頼をやめる | 記録を消す |
| インスタンスの記録 | 残る(status: revoked、revoked_at、revocation_reason、証跡) |
消える |
| その鍵での認証 | 拒否(401 invalid_client_attestation) |
拒否 |
| 発行済みのトークン | 削除 | 削除 |
| 同じ鍵の再登録 | できない | できる(別のインスタンスになる) |
失効は元に戻せません。
システムレベルと組織レベル
| パス | 使えるトークン | |
|---|---|---|
| システムレベル | /v1/management/tenants/{tenant-id}/client-instances |
管理テナントで発行したもの |
| 組織レベル | /v1/management/organizations/{organization-id}/tenants/{tenant-id}/client-instances |
組織の管理者のもの。組織に所属し、テナントがその組織のものであること |
操作・リクエスト・レスポンスは同じで、要求する権限も同じです。組織に属さないテナントを指定すると 403(organization_access_denied)を返します。
権限
| 操作 | 権限 |
|---|---|
| 登録 | idp:client-instance:create |
| 検索・取得 | idp:client-instance:read |
| 失効 | idp:client-instance:revoke |
| 削除 | idp:client-instance:delete |
Client Instance の検索
テナント内のインスタンスを、クライアントをまたいで検索します。新しく登録したものから順に返します。
条件はすべて任意で、組み合わせられます。取りうる値が決まっている条件(status、revocation_reason、
UUID の user_id、日時の from / to)に合わない値は 400 を返します。空の一覧を返すと「該当なし」と読み違えるためです。
path Parameters
| tenant-id required | string <uuid> テナント識別子 |
query Parameters
| client_id | string Example: client_id=mobile-app クライアントで絞り込む。client_id でも alias でも指定できる(インスタンスには正規の client_id で記録している) |
| user_id | string <uuid> 利用者で絞り込む(利用者の問い合わせで、その人の端末を一覧する) |
| status | string Enum: "active" "revoked" 状態(保存値)で絞り込む。期限切れかどうかは |
| expired | boolean |