Права доступа#
Право доступа назначается от субъекта доступа к объекту доступа.
пользователи,
приложения (префикс
its).
пользователи,
группы пользователей (префикс
grps),приложения (префикс
its).
Перечень прав пользователя#
GET https://login.company.com/blitz/api/v3/rights/of/<sub>
Получение прав доступа по субъекту доступа, являющемуся пользователем.
Необходимые разрешения: blitz_rights_full_access (системное) или blitz_api_user_rights (пользовательское).
Примеры
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}
Получение прав доступа по субъекту доступа, являющемуся приложением.
Необходимые разрешения: blitz_rights_full_access (системное).
Примеры
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"
]
}
}
Права в отношении пользователя#
API v3:
GET https://login.company.com/blitz/api/v3/rights/on/{subjectId}
API v4:
GET https://login.company.com/blitz/api/v4/rights/on/{subjectId}
Получение прав доступа по объекту доступа, являющемуся пользователем.
Необходимые разрешения: blitz_rights_full_access (системное) или blitz_api_user_rights (пользовательское).
Примеры
GET /blitz/api/v3/rights/on/BIP-3SGR7TA HTTP/1.1
Authorization: Bearer cNwIX…Nz
GET /blitz/api/v4/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"
]
}
BIP-3SGR7TA у пользователя BIP‑1SEQ41A Иванов Иван и у приложения test_app Test App есть право change_password и token_exchange#{
"BIP‑1SEQ41A": {
"displayName": "Иванов Иван",
"rights": [
"change_password",
"token_exchange"
]
},
"its|test_app": {
"displayName": "Test App",
"rights": [
"change_password",
"token_exchange"
]
}
}
Права в отношении группы пользователей#
API v3:
GET https://login.company.com/blitz/api/v3/rights/on/grps/{grp_id}?objectExt={profile}
API v4:
GET https://login.company.com/blitz/api/v4/rights/on/grps/{grp_id}?objectExt={profile}
Получение прав доступа по объекту доступа, являющемуся группой.
Необходимые разрешения: blitz_rights_full_access (системное) или blitz_api_user_rights (пользовательское).
Примеры
GET /blitz/api/v3/rights/on/grps/1147746651733?objectExt=orgs HTTP/1.1
Authorization: Bearer cNwIX…Nz
GET /blitz/api/v4/rights/on/grps/1147746651733?objectExt=orgs HTTP/1.1
Authorization: Bearer cNwIX…Nz
1147746651733 из профиля orgs у пользователя BIP‑1SEQ41A есть право ORG_ADMIN и у приложения test_app есть право CHANGE_PASSWORD#{
"BIP-1SEQ41A": [
"ORG_ADMIN"
],
"its|test_app": [
"CHANGE_PASSWORD"
]
}
1147746651733 из профиля orgs у пользователя BIP‑1SEQ41A Иванов Иван есть право ORG_ADMIN и у приложения test_app Test App есть право CHANGE_PASSWORD#{
"BIP-1SEQ41A": [
"displayName": "Иванов Иван",
"rights": [
"ORG_ADMIN"
]
],
"its|test_app": [
"displayName": "Test App",
"rights": [
"CHANGE_PASSWORD"
]
]
}
Права в отношении приложения#
API v3:
GET https://login.company.com/blitz/api/v3/rights/on/its/{app_id}
API v4:
GET https://login.company.com/blitz/api/v4/rights/on/its/{app_id}
Получение прав доступа по объекту доступа, являющемуся приложением.
Необходимые разрешения: blitz_rights_full_access (системное) или blitz_api_user_rights (пользовательское).
Примеры
GET /blitz/api/v3/rights/on/its/test_app2 HTTP/1.1
Authorization: Bearer cNwIX…Nz
GET /blitz/api/v4/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"
]
}
test_app2 у пользователя BIP‑1SEQ41A Иванов Иван есть право APP_ADMIN и у приложения test_app Test App есть право SYS_MON#{
"BIP-1SEQ41A": [
"displayName": "Иванов Иван",
"rights": [
"APP_ADMIN"
]
],
"its|test_app": [
"displayName": "Test App",
"rights": [
"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
Назначение прав доступа.
Необходимые разрешения: blitz_rights_full_access (системное).
subject– идентификатор субъекта, которому назначается право (идентификатор пользователя или приложения).subjectType– тип субъекта. Значениеits: в случае назначения права приложению;grps: в случае назначения права группе.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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
Content-Type: application/json
{
"subject": "test_app",
"subjectType": "its",
"object": "test_app2",
"objectType": "its",
"rights": ["SYS_MON"],
"tags": ["set_from_api"]
}
PUT /blitz/api/v3/rights HTTP/1.1
Authorization: Bearer cN…wIXNz
Content-Type: application/json
{
"subject": "test_app",
"subjectType": "grps",
"object": "test_app2",
"objectType": "its",
"rights": ["right1","right3","TEST"],
"tags": ["test_tag"]
}
{
"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
Отзыв права доступа.
Необходимые разрешения: blitz_rights_full_access (системное).
subject– идентификатор субъекта, у которого отзывается право (идентификатор пользователя или приложения).subjectType– тип субъекта. Значениеits: в случае отзыва права приложения;grps: в случае отзыва права группы.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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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 cN…wIXNz
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/v3/users/rights/change
Назначение и отзыв права ведущего пользователя в отношении ведомого пользователя.
В запрос должен быть добавлен заголовок с маркером доступа на разрешение с именем blitz_api_user_rights, полученным учетной записью ведущего пользователя.
Внимание
Запрос на отзыв прав может быть выполнен приложением не только с использованием пользовательского маркера доступа, полученного на разрешение с именем blitz_api_user_rights, но и с использованием системного маркера доступа, полученного на разрешение с именем blitz_rm_rights. В этом случае запрос на отзыв может включать subject любых пользователей (для отзыва у пользователя права не потребуется, чтобы именно этот пользователь осуществлял вход в систему и получал маркер доступа – система может отзывать права любого пользователя).
Назначение прав
Заполненный блок update с перечнем прав, которые должны быть добавлены в результате выполнения операции.
Каждое право описывается параметрами:
subject– идентификатор (sub) учетной записи ведущего пользователя;object– идентификатор (sub) учетной записи ведомого пользователя;rights– перечень прав в виде массива, который получает учетная запись ведущего пользователя в отношении учетной записи ведомого пользователя. Например, для права менять пароль от учетной записи должно быть указано правоchange_password(смена пароля), а для права менять атрибуты должно быть указано правоchange_attrs(смена атрибутов);tags– перечень тегов, указывающих на основания, по которым данный пользователь получил права.
Отзыв прав
Заполненный блок delete с перечнем прав, которые должны быть отозваны в результате выполнения операции.
Каждое право описывается параметрами:
subject– идентификатор (sub) учетной записи ведущего пользователя;object– идентификатор (sub) учетной записи ведомого пользователя;rights– перечень прав в виде массива, которые отзываются у ведущей учетной записи в отношении ведомой учетной записи;tags– перечень тегов, указывающих на основания, по которым данный пользователь получил права.
Если при выполнении запроса права не назначаются или не отзываются, то в теле запроса должен соответственно присутствовать или пустой блок update, или пустой блок delete.
В одном запросе может быть указано сразу несколько назначаемых/отзываемых прав, но в качестве субъекта (subject) должен быть указан только тот пользователь, на которого был получен маркер доступа, используемый для вызова сервиса.
Примеры
POST /blitz/api/v3/users/rights/change HTTP/1.1
Authorization: Bearer cN…wIXTg
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/v3/users/rights/change HTTP/1.1
Authorization: Bearer cN…wIXTg
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" : {}
}
]
}