メインコンテンツまでスキップ

UserProvisionService

ユーザー認証とプロビジョニングを提供するサービスです。

エンドポイント

サービス: bazbii.auth.v1.UserProvisionService
パッケージ: bazbii.auth.v1
定義ファイル: packages/proto/bazbii/auth/v1/user_provision.proto

gRPCサービス定義

service UserProvisionService {
rpc Provision(ProvisionRequest) returns (ProvisionResponse);
rpc Refresh(RefreshRequest) returns (RefreshResponse);
}

Methods

Provision

アプリ初回起動時に呼び出されるメソッドです。デバイス情報を登録し、JWTトークンとユーザーIDを返します。

リクエスト

message ProvisionRequest {
string app_install_id = 1; // インストールID(ヒント)
string idempotency_key = 2; // 冪等化キー
Platform platform = 3; // プラットフォーム
string os_version = 4; // OSバージョン
string app_version = 5; // アプリバージョン
string locale = 10; // 言語設定(BCP 47、オプション)
optional string device_public_key_pem = 20; // デバイス公開鍵(オプション)
}

enum Platform {
PLATFORM_UNKNOWN = 0;
PLATFORM_IOS = 1;
PLATFORM_ANDROID = 2;
PLATFORM_WEB = 3;
}

レスポンス

message ProvisionResponse {
string token_type = 1; // "Bearer"
string access_token = 2; // JWTアクセストークン
string refresh_token = 3; // リフレッシュトークン
int64 expires_in = 4; // 有効期限(秒)
google.protobuf.Timestamp issued_at = 5; // 発行日時
}

処理フロー

  1. デバイス情報の受信
  2. Idempotency Keyの検証(重複リクエストの防止)
  3. 新規Actorの生成(ユーザーIDの生成)
  4. JWTトークンの発行
  5. レスポンス返却

Refresh

リフレッシュトークンを使用してアクセストークンを更新します。

リクエスト

message RefreshRequest {
string refresh_token = 1;
}

レスポンス

message RefreshResponse {
string token_type = 1; // "Bearer"
string access_token = 2; // 新しいアクセストークン
string refresh_token = 3; // 新しいリフレッシュトークン(ローテーション時のみ)
int64 expires_in = 4; // 有効期限(秒)
google.protobuf.Timestamp issued_at = 5; // 発行日時
}

注意: refresh_tokenは、トークンのローテーションが行われた場合のみ新しい値が返されます。

処理フロー

  1. リフレッシュトークンの検証
  2. 新しいアクセストークンの発行
  3. リフレッシュトークンのローテーション(オプション)
  4. レスポンス返却