mongreldb-protocol 0.64.6

MongrelDB versioned protocol messages and service definitions (S1D).
Documentation
syntax = "proto3";

package mongreldb.v1;

import "common.proto";

service AuthService {
  rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse);
  rpc BeginScram(BeginScramRequest) returns (BeginScramResponse);
  rpc FinishScram(FinishScramRequest) returns (FinishScramResponse);
}

message AuthenticateRequest {
  RequestContext context = 1;
  oneof credential {
    PasswordCredential password = 2;
    ServiceTokenCredential service_token = 3;
    OidcCredential oidc = 4;
    MysqlCachingSha2Credential mysql_caching_sha2 = 5;
  }
}

message PasswordCredential {
  string username = 1;
  string password = 2;
}

message ServiceTokenCredential {
  string token_id = 1;
  string secret = 2;
}

message OidcCredential {
  string compact_jws = 1;
}

message MysqlCachingSha2Credential {
  string username = 1;
  bytes nonce = 2;
  bytes proof = 3;
}

message AuthenticateResponse {
  AuthenticatedIdentity identity = 1;
  // Short-lived opaque capability required by OpenSession. The identity
  // fields are diagnostic only and cannot be replayed as authority.
  bytes auth_token = 2;
}

message BeginScramRequest {
  RequestContext context = 1;
  string username = 2;
  string client_first_bare = 3;
  string client_nonce = 4;
}

message BeginScramResponse {
  bytes exchange_id = 1;
  string server_first = 2;
}

message FinishScramRequest {
  RequestContext context = 1;
  bytes exchange_id = 2;
  string client_final_without_proof = 3;
  string client_proof = 4;
}

message FinishScramResponse {
  string server_final = 1;
  AuthenticateResponse authentication = 2;
}