auth.proto

Defines a gNOI protocol for an Authenticate API.

Table 1. Authentication remote procedure calls
RPC Purpose
Authenticate Validate credentials and provide a JWT access token.
GetAccessToken Accept a valid refresh token and generate a new access token.
ListRoles List all available roles.
syntax = "proto3";

package auth;

service Auth {
  // Authenticate will validate user credentials and provides access token in response
  rpc Authenticate (AuthenticateRequest) returns (AuthenticateResponse) {}

  // GetAccessToken will accept a valid refresh token and generate a new access token
  rpc GetAccessToken (TokenRequest) returns (TokenResponse) {}

  // ListRoles lists all the available roles in the system
  rpc ListRoles (ListRolesRequest) returns (ListRolesResponse) {};
}

message AuthenticateRequest {
  // user credentials
  string username = 1;
  string password = 2;
}

message AuthenticateResponse {
 // JWT access token 
 string access_token = 1;
 // JWT refresh token
 string refresh_token = 2;
}

message TokenRequest {
  // JWT refresh token
  string refresh_token = 1;
}

message TokenResponse {
  // JWT access token
 string access_token = 1;
}

message ListRolesRequest {
}

//ListRolesResponse returns information about all roles available in the system
message ListRolesResponse {
    repeated RoleInfo role_info = 1;
}

//RoleInfo contains the role specific information like role name, type and description
message RoleInfo {
   string role_name = 1;
   enum RoleType {
      UNSPECIFIED = 0;
      SYSTEM_DEFINED = 1;
   }
   RoleType role_type = 2;
   string description = 3;
}