Move SessionToken to session package

Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
This commit is contained in:
Stanislav Bogatyrev 2020-08-18 16:49:05 +03:00 committed by Stanislav Bogatyrev
parent 7d72061fb3
commit e5f78eb927
3 changed files with 87 additions and 77 deletions

View file

@ -6,7 +6,7 @@ option go_package = "github.com/nspcc-dev/neofs-api-go/v2/object/grpc;object";
option csharp_namespace = "NeoFS.API.v2.Object"; option csharp_namespace = "NeoFS.API.v2.Object";
import "refs/types.proto"; import "refs/types.proto";
import "service/types.proto"; import "session/types.proto";
// Type of the object payload content // Type of the object payload content
enum ObjectType { enum ObjectType {
@ -77,7 +77,7 @@ message Header {
// Session token, if it was used during Object creation. // Session token, if it was used during Object creation.
// Need it to verify integrity and authenticity out of Request scope. // Need it to verify integrity and authenticity out of Request scope.
neo.fs.v2.service.SessionToken session_token = 9; neo.fs.v2.session.SessionToken session_token = 9;
// Attribute groups the user-defined Key-Value pairs attached to the object // Attribute groups the user-defined Key-Value pairs attached to the object
message Attribute { message Attribute {

View file

@ -7,6 +7,7 @@ option csharp_namespace = "NeoFS.API.v2.Service";
import "acl/types.proto"; import "acl/types.proto";
import "refs/types.proto"; import "refs/types.proto";
import "session/types.proto";
// Extended headers for Request/Response // Extended headers for Request/Response
message XHeader { message XHeader {
@ -17,80 +18,6 @@ message XHeader {
string value = 2; string value = 2;
} }
// Context information for Session Tokens related to ObjectService requests
message ObjectSessionContext {
// Object request verbs
enum Verb {
// Unknown verb
VERB_UNSPECIFIED = 0;
// Refers to object.Put RPC call
PUT = 1;
// Refers to object.Get RPC call
GET = 2;
// Refers to object.Head RPC call
HEAD = 3;
// Refers to object.Search RPC call
SEARCH = 4;
// Refers to object.Delete RPC call
DELETE = 5;
// Refers to object.GetRange RPC call
RANGE = 6;
// Refers to object.GetRangeHash RPC call
RANGEHASH = 7;
}
// Verb is a type of request for which the token is issued
Verb verb = 1;
// Related Object address
neo.fs.v2.refs.Address address = 2;
}
// NeoFS session token.
message SessionToken {
// Session token body
message Body {
// ID is a token identifier. valid UUIDv4 represented in bytes
bytes id = 1;
// OwnerID carries identifier of the session initiator.
neo.fs.v2.refs.OwnerID owner_id = 2;
// Lifetime parameters of the token. Filed names taken from rfc7519.
message TokenLifetime {
// Expiration Epoch
uint64 exp = 1;
// Not valid before Epoch
uint64 nbf = 2;
// Issued at Epoch
uint64 iat = 3;
}
// Lifetime is a lifetime of the session
TokenLifetime lifetime = 3;
// SessionKey is a public key of session key
bytes session_key = 4;
// Carries context of the session.
oneof context {
// ObjectService session context.
ObjectSessionContext object = 5;
}
}
// Session Token body
Body body = 1;
// Signature is a signature of session token information
neo.fs.v2.refs.Signature signature = 2;
}
// Information about the request // Information about the request
message RequestMetaHeader { message RequestMetaHeader {
@ -107,7 +34,7 @@ message RequestMetaHeader {
repeated XHeader x_headers = 4; repeated XHeader x_headers = 4;
// Token is a token of the session within which the request is sent // Token is a token of the session within which the request is sent
SessionToken session_token = 5; neo.fs.v2.session.SessionToken session_token = 5;
// Bearer is a Bearer token of the request // Bearer is a Bearer token of the request
neo.fs.v2.acl.BearerToken bearer_token = 6; neo.fs.v2.acl.BearerToken bearer_token = 6;

83
session/types.proto Normal file
View file

@ -0,0 +1,83 @@
syntax = "proto3";
package neo.fs.v2.session;
option go_package = "github.com/nspcc-dev/neofs-api-go/v2/session/grpc;session";
option csharp_namespace = "NeoFS.API.v2.Session";
import "refs/types.proto";
// Context information for Session Tokens related to ObjectService requests
message ObjectSessionContext {
// Object request verbs
enum Verb {
// Unknown verb
VERB_UNSPECIFIED = 0;
// Refers to object.Put RPC call
PUT = 1;
// Refers to object.Get RPC call
GET = 2;
// Refers to object.Head RPC call
HEAD = 3;
// Refers to object.Search RPC call
SEARCH = 4;
// Refers to object.Delete RPC call
DELETE = 5;
// Refers to object.GetRange RPC call
RANGE = 6;
// Refers to object.GetRangeHash RPC call
RANGEHASH = 7;
}
// Verb is a type of request for which the token is issued
Verb verb = 1;
// Related Object address
neo.fs.v2.refs.Address address = 2;
}
// NeoFS session token.
message SessionToken {
// Session token body
message Body {
// ID is a token identifier. valid UUIDv4 represented in bytes
bytes id = 1;
// OwnerID carries identifier of the session initiator.
neo.fs.v2.refs.OwnerID owner_id = 2;
// Lifetime parameters of the token. Filed names taken from rfc7519.
message TokenLifetime {
// Expiration Epoch
uint64 exp = 1;
// Not valid before Epoch
uint64 nbf = 2;
// Issued at Epoch
uint64 iat = 3;
}
// Lifetime is a lifetime of the session
TokenLifetime lifetime = 3;
// SessionKey is a public key of session key
bytes session_key = 4;
// Carries context of the session.
oneof context {
// ObjectService session context.
ObjectSessionContext object = 5;
}
}
// Session Token body
Body body = 1;
// Signature is a signature of session token information
neo.fs.v2.refs.Signature signature = 2;
}