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; // 発行日時
}
処理フロー
- デバイス情報の受信
- Idempotency Keyの検証(重複リクエストの防止)
- 新規Actorの生成(ユーザーIDの生成)
- JWTトークンの発行
- レスポンス返却
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は、トークンのローテーションが行われた場合のみ新しい値が返されます。
処理フロー
- リフレッシュトークンの検証
- 新しいアクセストークンの発行
- リフレッシュトークンのローテーション(オプション)
- レスポンス返却