frostfs-api/proto-docs/session.md
Stanislav Bogatyrev 579a618f72 docs: Update docs with new token locations
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
2020-08-18 18:31:36 +03:00

8.3 KiB

Protocol Documentation

Table of Contents

Top

session/service.proto

Service "neo.fs.v2.session.SessionService"

Create Session record on Node side

rpc Create(CreateRequest) returns (CreateResponse);

Method Create

Create opens new session between the client and the server.

Name Input Output
Create CreateRequest CreateResponse

Message CreateRequest

CreateRequest carries an information necessary for opening a session.

Field Type Label Description
body CreateRequest.Body Body of create session token request message.
meta_header neo.fs.v2.service.RequestMetaHeader Carries request meta information. Header data is used only to regulate message transport and does not affect request execution.
verify_header neo.fs.v2.service.RequestVerificationHeader Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission.

Message CreateRequest.Body

Request body

Field Type Label Description
owner_id neo.fs.v2.refs.OwnerID Carries an identifier of a session initiator.
expiration uint64 Expiration Epoch

Message CreateResponse

CreateResponse carries an information about the opened session.

Field Type Label Description
body CreateResponse.Body Body of create session token response message.
meta_header neo.fs.v2.service.ResponseMetaHeader Carries response meta information. Header data is used only to regulate message transport and does not affect request execution.
verify_header neo.fs.v2.service.ResponseVerificationHeader Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission.

Message CreateResponse.Body

Response body

Field Type Label Description
id bytes id carries an identifier of session token.
session_key bytes session_key carries a session public key.

Top

session/types.proto

Message ObjectSessionContext

Context information for Session Tokens related to ObjectService requests

Field Type Label Description
verb ObjectSessionContext.Verb Verb is a type of request for which the token is issued
address neo.fs.v2.refs.Address Related Object address

Message SessionToken

NeoFS session token.

Field Type Label Description
body SessionToken.Body Session Token body
signature neo.fs.v2.refs.Signature Signature is a signature of session token information

Message SessionToken.Body

Session token body

Field Type Label Description
id bytes ID is a token identifier. valid UUIDv4 represented in bytes
owner_id neo.fs.v2.refs.OwnerID OwnerID carries identifier of the session initiator.
lifetime SessionToken.Body.TokenLifetime Lifetime is a lifetime of the session
session_key bytes SessionKey is a public key of session key
object ObjectSessionContext ObjectService session context.

Message SessionToken.Body.TokenLifetime

Lifetime parameters of the token. Filed names taken from rfc7519.

Field Type Label Description
exp uint64 Expiration Epoch
nbf uint64 Not valid before Epoch
iat uint64 Issued at Epoch

ObjectSessionContext.Verb

Object request verbs

Name Number Description
VERB_UNSPECIFIED 0 Unknown verb
PUT 1 Refers to object.Put RPC call
GET 2 Refers to object.Get RPC call
HEAD 3 Refers to object.Head RPC call
SEARCH 4 Refers to object.Search RPC call
DELETE 5 Refers to object.Delete RPC call
RANGE 6 Refers to object.GetRange RPC call
RANGEHASH 7 Refers to object.GetRangeHash RPC call

Scalar Value Types

.proto Type Notes C++ Type Java Type Python Type
double double double float
float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long
uint32 Uses variable-length encoding. uint32 int int/long
uint64 Uses variable-length encoding. uint64 long int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long
sfixed32 Always four bytes. int32 int int
sfixed64 Always eight bytes. int64 long int/long
bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode
bytes May contain any arbitrary sequence of bytes. string ByteString str