Права доступа#

Внимание

Для выполнения запросов по просмотру, назначению, отзыву прав доступа приложение должно получить маркер доступа с системным разрешением blitz_rights_full_access.

Совет

Для просмотра прав доступа пользователя, где он является субъектом, также можно использовать маркер доступа с пользовательским разрешением blitz_user_rights.

Право доступа назначается от субъекта доступа к объекту доступа.

Субъекты доступа:
  • пользователи,

  • приложения (префикс its).

Объекты доступа:
  • пользователи,

  • группы пользователей (префикс grps),

  • приложения (префикс its).

Перечень прав пользователя#

Метод

GET https://login.company.com/blitz/api/v3/rights/of/<sub>

Получение прав доступа по субъекту доступа, являющемуся пользователем.

Примеры

GET /blitz/api/v3/rights/of/BIP-1SEQ41A HTTP/1.1
Authorization: Bearer cNwIX…Nz
Пользователь BIP-1SEQ41A имеет право ORG_ADMIN к группе пользователей 1147746651733, право APP_ADMIN к приложению test_app2, право change_password к учетной записи пользователя BIP-3SGR7TA#
{
    "grps|1147746651733|orgs": {
        "ORG_ADMIN": [
            "set_from_api",
            "another_one_tag"
        ]
    },
    "its|test_app2": {
        "APP_ADMIN": [
            "set_from_api"
        ]
    },
    "BIP-3SGR7TA": {
        "change_password": [
            "parent"
        ]
    }
}

Перечень прав приложения#

Метод

GET https://login.company.com/blitz/api/v3/rights/of/its/<app_id>

Получение прав доступа по субъекту доступа, являющемуся приложением.

Примеры

GET /blitz/api/v3/rights/of/its/test_app HTTP/1.1
Authorization: Bearer cNwIX…Nz
Приложение test_app имеет право SYS_MON к приложению test_app2, право change_password к учетной записи пользователя BIP‑3SGR7TA, право ORG_ADMIN к группе пользователей 1147746651733#
{
    "its|test_app2": {
        "SYS_MON": [
            "set_from_api"
        ]
    },
    "BIP-3SGR7TA": {
        "change_password": [
            "set_from_api"
        ]
    },
    "grps|1147746651733|orgs": {
        "ORG_ADMIN": [
            "set_from_api"
        ]
    }
}

Права в отношении пользователя#

Метод

GET https://login.company.com/blitz/api/v3/rights/on/<sub>

Получение прав доступа по объекту доступа, являющемуся пользователем.

Примеры

GET /blitz/api/v3/rights/on/BIP-3SGR7TA HTTP/1.1
Authorization: Bearer cNwIX…Nz
На учетную запись BIP-3SGR7TA у пользователя BIP‑1SEQ41A и у приложения test_app есть право change_password#
{
    "BIP 1SEQ41A": [
        "change_password"
    ],
    "its|test_app": [
        "change_password"
    ]
}

Права в отношении группы пользователей#

Метод

GET https://login.company.com/blitz/api/v3/rights/on/grps/<grp_id>?objectExt=<profile>

Получение прав доступа по объекту доступа, являющемуся группой.

Примеры

GET /blitz/api/v3/rights/on/grps/1147746651733?objectExt=orgs HTTP/1.1
Authorization: Bearer cNwIX…Nz
На учетную запись группы 1147746651733 из профиля orgs у пользователя BIP‑1SEQ41A, и у приложения test_app есть право ORG_ADMIN#
{
    "BIP 1SEQ41A": [
        "ORG_ADMIN"
    ],
    "its|test_app": [
        "ORG_ADMIN"
    ]
}

Права в отношении приложения#

Метод

GET https://login.company.com/blitz/api/v3/rights/on/its/<app_id>

Получение прав доступа по объекту доступа, являющемуся приложением.

Примеры

GET /blitz/api/v3/rights/on/its/test_app2 HTTP/1.1
Authorization: Bearer cNwIX…Nz
На учетную запись приложения test_app2 у пользователя BIP‑1SEQ41A есть право APP_ADMIN, и у приложения test_app есть право SYS_MON#
{
    "BIP 1SEQ41A": [
        "APP_ADMIN"
    ],
    "its|test_app": [
        "SYS_MON"
    ]
}
В случае если маркер доступа просрочен, сервис вернет ошибку HTTP 401 Unauthorized и JSON#
{
    "type": "security_error",
    "error": "bad_access_token",
    "desc": "expired_access_token"
}

Назначение прав#

Метод

PUT https://login.company.com/blitz/api/v3/rights

Назначение прав доступа.

Тело запроса
  • subject – идентификатор субъекта, которому назначается право (идентификатор пользователя или приложения);

  • subjectType – тип субъекта. Параметр указывается только в случае назначения права приложению. В этом случае используется значение its;

  • object – идентификатор объекта, на который назначается право (идентификатор пользователя, группы пользователей или приложения);

  • objectType – тип объекта. Параметр указывается только в случае назначения права на группу пользователей (значение grps) или на приложение (значение its);

  • rights – массив со списком назначаемых прав субъекту на объект;

  • tags – массив со списком тэгов назначаемых прав.

Возвращает
  • В случае успешного назначения права доступа - HTTP 204 No Content.

  • Если маркер доступа просрочен - HTTP 401 Unauthorized.

  • Если субъекта или объекта не существует - HTTP 400 Bad Request

Примеры

Назначение права доступа пользователю на другого пользователя#
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "BIP-1SEQ41A",
    "object": "BIP-3SGR7TA",
    "rights": ["change_password"],
    "tags": ["set_from_api"]
}
Назначение права доступа пользователю на группу#
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "BIP-1SEQ41A",
    "object": "1147746651733",
    "objectType": "grps",
    "rights": ["ORG_ADMIN"],
    "tags": ["set_from_api"]
}
Назначение права доступа пользователю на приложение#
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "BIP-1SEQ41A",
    "object": "test_app2",
    "objectType": "its",
    "rights": ["APP_ADMIN"],
    "tags": ["set_from_api"]
}
Назначение права доступа приложению на пользователя#
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "test_app",
    "subjectType": "its",
    "object": "BIP-3SGR7TA",
    "rights": ["change_password"],
    "tags": ["set_from_api"]
}
Назначение права доступа приложению на группу#
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "test_app",
    "subjectType": "its",
    "object": "1147746651733",
    "objectType": "grps",
    "rights": ["ORG_ADMIN"],
    "tags": ["set_from_api"]
}
Назначение права доступа приложению на другое приложение#
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "test_app",
    "subjectType": "its",
    "object": "test_app2",
    "objectType": "its",
    "rights": ["SYS_MON"],
    "tags": ["set_from_api"]
}
Маркер доступа просрочен#
{
    "type": "security_error",
    "error": "bad_access_token",
    "desc": "expired_access_token"
}
Назначаемого права не существует#
{
    "type": "process_error",
    "error": "unknown_right",
    "desc": "The specified right is unknown",
    "params": {
        "right": "change_password1"
    }
}
Указанного в качестве субъекта или объекта пользователя не существует#
{
    "type": "process_error",
    "error": "unknown_user",
    "desc": "The specified user is unknown",
    "params": {
        "userId": "ivanov1"
    }
}
Указанной в качестве объекта группы не существует#
{
    "type": "process_error",
    "error": "unknown_group",
    "desc": "The specified group is unknown",
    "params": {
        "grpId": "1147746651734"
    }
}
Указанного в качестве субъекта или объекта приложения не существует#
{
    "type": "process_error",
    "error": "unknown_rp",
    "desc": "The specified relying party is unknown",
    "params": {
        "rpId": "test_app3"
    }
}

Отзыв прав#

Метод

DELETE https://login.company.com/blitz/api/v3/rights

Отзыв права доступа.

Тело запроса
  • subject – идентификатор субъекта, у которого отзывается право (идентификатор пользователя или приложения);

  • subjectType – тип субъекта. Параметр указывается только в случае отзыва права у приложения. В этом случае используется значение its;

  • object – идентификатор объекта, на который отзывается право (идентификатор пользователя, группы пользователей или приложения);

  • objectType – тип объекта. Параметр указывается только в случае отзыва права на группу пользователей (значение grps) или на приложение (значение its);

  • rights – массив со списком отзываемых прав субъекта на объект;

  • tags – массив со списком тэгов отзываемых прав.

    Предупреждение

    Если право доступа было назначено субъекту доступа на объект доступа с указанием нескольких тэгов, то для отзыва права доступа также необходимо указать все тэги. Если отзыв права доступа вызывается не с полным указанием тэгов, то при отзыве будут удалены только отзываемые тэги, а право доступа у субъекта доступа к объекту доступа останется, пока остается хотя бы один из тэгов.

Возвращает
  • В случае успешного отзыва права доступа сервис вернет HTTP 204 No Content.

  • Если маркер доступа просрочен - HTTP 401 Unauthorized.

  • Если отзываемого права, субъекта или объекта не существует - HTTP 400 Bad Request

Примеры

Отзыв права доступа пользователю на другого пользователя#
DELETE /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "BIP-1SEQ41A",
    "object": "BIP-3SGR7TA",
    "rights": ["change_password"],
    "tags": ["set_from_api"]
}
Отзыв права доступа пользователю на группу#
DELETE /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "BIP-1SEQ41A",
    "object": "1147746651733",
    "objectType": "grps",
    "rights": ["ORG_ADMIN"],
    "tags": ["set_from_api"]
}
Отзыв права доступа пользователю на приложение#
DELETE /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "BIP-1SEQ41A",
    "object": "test_app2",
    "objectType": "its",
    "rights": ["APP_ADMIN"],
    "tags": ["set_from_api"]
}
Отзыв права доступа приложению на пользователя#
DELETE /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "test_app",
    "subjectType": "its",
    "object": "BIP-3SGR7TA",
    "rights": ["change_password"],
    "tags": ["set_from_api"]
}
Отзыв права доступа приложению на группу#
DELETE /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "test_app",
    "subjectType": "its",
    "object": "1147746651733",
    "objectType": "grps",
    "rights": ["ORG_ADMIN"],
    "tags": ["set_from_api"]
}
Отзыв права доступа приложению на другое приложение#
DELETE /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cNwIXNz
Content-Type: application/json

{
    "subject": "test_app",
    "subjectType": "its",
    "object": "test_app2",
    "objectType": "its",
    "rights": ["SYS_MON"],
    "tags": ["set_from_api"]
}
Маркер доступа просрочен#
{
    "type": "security_error",
    "error": "bad_access_token",
    "desc": "expired_access_token"
}
Отзываемого права не существует#
{
    "type": "process_error",
    "error": "unknown_right",
    "desc": "The specified right is unknown",
    "params": {
        "right": "change_password1"
    }
}
Указанного в качестве субъекта или объекта пользователя не существует#
{
    "type": "process_error",
    "error": "unknown_user",
    "desc": "The specified user is unknown",
    "params": {
        "userId": "ivanov1"
    }
}
Указанной в качестве объекта группы не существует#
{
    "type": "process_error",
    "error": "unknown_group",
    "desc": "The specified group is unknown",
    "params": {
        "grpId": "1147746651734"
    }
}
Указанного в качестве субъекта или объекта приложения не существует#
{
    "type": "process_error",
    "error": "unknown_rp",
    "desc": "The specified relying party is unknown",
    "params": {
        "rpId": "test_app3"
    }
}

Права ведущего пользователя в отношении ведомого#

Метод

POST https://login.company.com/blitz/api/v2/users/rights/change

Назначение и отзыв права ведущего пользователя в отношении ведомого пользователя.

Внимание

Запрос на отзыв прав может быть выполнен приложением не только с использованием пользовательского маркера доступа, полученного на разрешение с именем blitz_user_rights, но и с использованием системного маркера доступа, полученного на разрешение с именем blitz_rm_rights. В этом случае запрос на отзыв может включать subject любых пользователей (для отзыва у пользователя права не потребуется, чтобы именно этот пользователь осуществлял вход в систему и получал маркер доступа – система может отзывать права любого пользователя).

Заголовки

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

Тело запроса
Назначение прав

Заполненный блок update с перечнем прав, которые должны быть добавлены в результате выполнения операции.

Каждое право описывается параметрами:

  • subject – идентификатор (sub) учетной записи ведущего пользователя;

  • object – идентификатор (sub) учетной записи ведомого пользователя;

  • rights – перечень прав в виде массива, который получает учетная запись ведущего пользователя в отношении учетной записи ведомого пользователя. Например, для права менять пароль от учетной записи должно быть указано право change_password (смена пароля);

  • tags – перечень тегов, указывающих на основания, по которым данный пользователь получил права.

Отзыв прав

Заполненный блок delete с перечнем прав, которые должны быть отозваны в результате выполнения операции.

Каждое право описывается параметрами:

  • subject – идентификатор (sub) учетной записи ведущего пользователя;

  • object – идентификатор (sub) учетной записи ведомого пользователя;

  • rights – перечень прав в виде массива, которые отзываются у ведущей учетной записи в отношении ведомой учетной записи;

  • tags – перечень тегов, указывающих на основания, по которым данный пользователь получил права.

Если при выполнении запроса права не назначаются или не отзываются, то в теле запроса должен соответственно присутствовать или пустой блок update, или пустой блок delete. В одном запросе может быть указано сразу несколько назначаемых/отзываемых прав, но в качестве субъекта (subject) должен быть указан только тот пользователь, на которого был получен маркер доступа, используемый для вызова сервиса.

Примеры

Назначение прав#
POST /blitz/api/v2/users/rights/change HTTP/1.1
Authorization: Bearer cNwIXTg
Content-Type: application/json

{
   "update":[
      {
         "subject":"6561d0d9-5583-4bb5-a681-b591358e5fcd",
         "object":"5cffd68f-2cb8-4f7a-b0f3-9fa69a1fbbcd",
         "rights":[
            "change_password"
         ],
         "tags":[
            "parent"
         ]
      },
      {
         "subject":"6561d0d9-5583-4bb5-a681-b591358e5fcd",
         "object":"b855957d-bf24-48d4-bb63-cce4f5064590d",
         "rights":[
            "change_password"
         ],
         "tags":[
            "parent"
         ]
      }
   ],
   "delete":[
   ]
}
Отзыв прав#
POST /blitz/api/v2/users/rights/change HTTP/1.1
Authorization: Bearer cNwIXTg
Content-Type: application/json

{
   "update":[
   ],
   "delete":[
      {
         "subject":"b855957d-bf24-48d4-bb63-cce4f5064590d",
         "object":"5cffd68f-2cb8-4f7a-b0f3-9fa69a1fbbcd",
         "rights":[
            "change_password"
         ],
         "tags":[
            "parent"
         ]
      }
   ]
}
В случае ошибки запрос отклоняется целиком и возвращается перечень возникших ошибок#
{
   "errors" : [
      {
         "code" : "validation_error",
         "params" : {},
         "desc" : "(For subject 'dea75b73-a2ba-4b60-a41c-bb640968826b') Incorrect right '' to object '5cffd68f-2cb8-4f7a-b0f3-9fa69a1fbbcd'"
      },
      {
         "params" : {},
         "code" : "validation_error",
         "desc" : "(For subject 'dea75b73-a2ba-4b60-a41c-bb640968826b') Incorrect tag '' for right 'write' to object '5cffd68f-2cb8-4f7a-b0f3-9fa69a1fbbcd'"
      },
      {
         "desc" : "(For subject 'dea75b73-a2ba-4b60-a41c-bb640968826b') Incorrect object ''",
         "code" : "validation_error",
         "params" : {}
      },
      {
         "desc" : "Incorrect subject ''",
         "code" : "validation_error",
         "params" : {}
      }
   ]
}