Перейти к содержанию

Сущности авторизационной модели

Сервис идентификации (IdentityService)

Сервис идентификации осуществляет идентификацию пользователя и выдает токен, который содержит атрибуты пользователя.

Пользователь (User)

Физическое лицо, зарегистрированное в сервисе идентификации. Удостоверяющие сервисы сегмента "Ключ" выдают пользователю JWT токен, который отправляется в заголовок запроса authorization=Bearer %token%

Api-Key

Ключ, который выдается контрагенту для M2M интеграции. Привязан к группе доступа, запрос с использованием Api-Key контролируется разрешениями этой группы. Отправляется в заголовок запроса X-Api-Key=%api-key%

Сервис ресурсов (ResourceService)

Сервис управляющий бизнес-сущностями некой доменной области и требующий разделения прав доступа пользователей к ресурсам. Сервис ресурсов контролирует подлинность пользовательского токена, имеет набор доверенных сервисов идентификации. Методы сервиса реализуют политики доступа к ресурсам, опираясь на атрибуты пользователя (Claim), полученные или в теле токена, или в результате запроса в сервис управления доступом, например, на разрешения.

Разрешения (Permission)

Атрибуты пользователя, которыми управляет сервис управления доступом, и на основании которых сервис ресурсов дает доступ к ресурсам. Представляет собой специальные атрибуты (Claim) с key=PERMISSION, где value - это строка вида telemetry_control:user:save:own - telemetry_control - определение ресурсного домена - device - тип ресурса над которой происходит действие - save - разрешенное действие над ресурсом - own - определение resource scope - подмножества ресурсов, над которыми разрешено действие.

Конструктор разрешений

Группы доступа (Group)

Группа пользователей, наделенных общим набором разрешений. Пользователи принадлежат группе, если они привязаны к группе в сервисе управления доступом или если их атрибуты соответствуют требованиям для группы.

Шаблоны группы пользователей (GroupTemplate)

Шаблон для создания группы нужного типа. Содержит набор необходимых разрешений и требований, набор может быть дополнен при создании конкретной группы.

Сервис управления доступом (AccessService)

Сервис управляющий сущностями авторизационной модели

%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD
%% Nodes

IdentityService
adminUI

subgraph access_management.GroupService
  grpcGroupCRUD
  grpcGroupUserAttach
  GetGroupClaimList
end

subgraph resourceService
  resourceMethod
  policyImplementation
end


clientUI-->|1.login,<br>credentials|IdentityService
IdentityService-->|2.clientKeyToken|clientUI
clientUI-->|3.getResource,<br>clientKeyToken|resourceMethod
resourceMethod-->|4.userId,<br>userAttrs|GetGroupClaimList
GetGroupClaimList-->|5.getUserInfo|IdentityService
IdentityService-->|6.userInfo|GetGroupClaimList
GetGroupClaimList-->|7.grantedPermissions,<br>userGroups|resourceMethod
resourceMethod-->|8.grantedPermissions,<br>userGroups|policyImplementation
policyImplementation-->|9.userPrivilege|resourceMethod
resourceMethod-->|10.resource|clientUI

adminUI-->|editPermission|grpcGroupCRUD
adminUI-->|editAttach|grpcGroupUserAttach