Mainflux.mainflux/auth.proto

170 lines
4.2 KiB
Protocol Buffer

// Copyright (c) Mainflux
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package mainflux;
option go_package = "./mainflux";
// AuthzService is a service that provides authentication and authorization
// functionalities for the things service.
service AuthzService {
// Authorize checks if the subject is authorized to perform
// the action on the object.
rpc Authorize(AuthorizeReq) returns (AuthorizeRes) {}
}
// AuthService is a service that provides authentication and authorization
// functionalities for the users service.
service AuthService {
rpc Issue(IssueReq) returns (Token) {}
rpc Login(LoginReq) returns (Token) {}
rpc Refresh(RefreshReq) returns (Token) {}
rpc Identify(IdentityReq) returns (IdentityRes) {}
rpc Authorize(AuthorizeReq) returns (AuthorizeRes) {}
rpc AddPolicy(AddPolicyReq) returns (AddPolicyRes) {}
rpc DeletePolicy(DeletePolicyReq) returns (DeletePolicyRes) {}
rpc ListObjects(ListObjectsReq) returns (ListObjectsRes) {}
rpc ListAllObjects(ListObjectsReq) returns (ListObjectsRes) {}
rpc CountObjects(CountObjectsReq) returns (CountObjectsRes) {}
rpc ListSubjects(ListSubjectsReq) returns (ListSubjectsRes) {}
rpc ListAllSubjects(ListSubjectsReq) returns (ListSubjectsRes) {}
rpc CountSubjects(CountSubjectsReq) returns (CountSubjectsRes) {}
}
// If a token is not carrying any information itself, the type
// field can be used to determine how to validate the token.
// Also, different tokens can be encoded in different ways.
message Token {
string accessToken = 1;
optional string refreshToken = 2;
string accessType = 3;
}
message IdentityReq {
string token = 1;
}
message IdentityRes {
string id = 1;
}
message IssueReq {
string id = 1;
uint32 type = 3;
}
message LoginReq {
string id = 1;
string domain = 3;
}
message RefreshReq { string value = 1; }
message AuthorizeReq {
string namespace = 1; // Namespace = Domain
string subject_type = 2; // Thing or User
string subject_kind = 3; // ID or Token
string subject_relation = 4; // Subject relation
string subject = 5; // Subject value (id or token, depending on kind)
string relation = 6; // Relation to filter
string permission = 7; // Action
string object = 8; // Object ID
string object_type = 9; // Thing, User, Group
}
message AuthorizeRes {
bool authorized = 1;
string id = 2;
}
message AddPolicyReq {
string namespace = 1;
string subject_type = 2;
string subject_relation = 3;
string subject = 4;
string relation = 5;
string permission = 6;
string object = 7;
string object_type = 8;
}
message AddPolicyRes { bool authorized = 1; }
message DeletePolicyReq {
string namespace = 1;
string subject_type = 2;
string subject_relation = 3;
string subject = 4;
string relation = 5;
string permission = 6;
string object = 7;
string object_type = 8;
}
message DeletePolicyRes { bool deleted = 1; }
message ListObjectsReq {
string namespace = 1;
string subject_type = 2;
string subject_relation = 3;
string subject = 4;
string relation = 5;
string permission = 6;
string object = 7;
string object_type = 8;
string nextPageToken = 9;
int32 limit = 10;
}
message ListObjectsRes {
repeated string policies = 1;
string nextPageToken = 2;
}
message CountObjectsReq {
string namespace = 1;
string subject_type = 2;
string subject_relation = 3;
string subject = 4;
string relation = 5;
string permission = 6;
string object = 7;
string object_type = 8;
string nextPageToken = 9;
}
message CountObjectsRes { int64 count = 1; }
message ListSubjectsReq {
string namespace = 1;
string subject_type = 2;
string subject_relation = 3;
string subject = 4;
string relation = 5;
string permission = 6;
string object = 7;
string object_type = 8;
string nextPageToken = 9;
int32 limit = 10;
}
message ListSubjectsRes {
repeated string policies = 1;
string nextPageToken = 2;
}
message CountSubjectsReq {
string namespace = 1;
string subject_type = 2;
string subject_relation = 3;
string subject = 4;
string relation = 5;
string permission = 6;
string object = 7;
string object_type = 8;
string nextPageToken = 9;
}
message CountSubjectsRes { int64 count = 1; }