Medlinx

Medlinx

  • Интеграция
  • Авторизация и права доступа
  • История версий документа

›Авторизация и права доступа

Авторизация и права доступа

  • Способы авторизации
  • Проверка получения токенов по Authorization Code Flow на примере клиента Postman
  • Проверка получения токенов по Resource Owner Password Flow на примере клиента Postman
  • Права доступа
  • Безопасность

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

У любого ресурса в системе есть владелец и права доступа.

Владелец у ресурса может быть только один и не может меняться. У владельца всегда есть все права на ресурс, даже если не указаны явно.

Права доступа может изменять только владелец ресурса.

Существует три типа доступа:

  • Чтение ресурса (read)

  • Чтение истории изменений (readhistory)

  • Изменение ресурса (updatebody)

Получение списка прав доступа

Получить метаданные можно простым получением ресурса

GET fhir/<Resource>/<id>
ИмяLocationОписание
AuthorizationHeaderсм. Авторизация
Content-TypeHeaderapplication/fhir+json
RequestBodyFhir Resource

Request: Object

В ответе в поле meta указаны права доступа, например:

{
    "id": "000015b8-1788-49b0-b3d4-988e38467216",
    "resourceType": "organization",
    "meta": {
        "security": [
            {
                "system": "https://api.medlinx.online/security/read",
                "code": "clinics.migrator"
            },
            {
                "system": "https://api.medlinx.online/security/readhistory",
                "code": "clinics.migrator"
            },
            {
                "system": "https://api.medlinx.online/security/updatebody",
                "code": "clinics.migrator"
            },
            {
                "system": "https://api.medlinx.online/security/owner",
                "code": "clinics.migrator"
            }
        ]
    }
}

Так же получить метаданные можно через специальную операцию:

GET fhir/<Resource>/<id>/$meta
ИмяLocationОписание
AuthorizationHeaderсм. Авторизация
Content-TypeHeaderapplication/fhir+json
RequestBodyParameters (Fhir Resource)

Request: Object

В ответ сервер отправит ресурс Parameters с указанием только метаданных, например:

{
    "resourceType": "Parameters",
    "id": "000015b8-1788-49b0-b3d4-988e38467216",
    "meta": {
        "security": [
            {
                "system": "https://api.medlinx.online/security/read",
                "code": "clinics.migrator"
            },
            {
                "system": "https://api.medlinx.online/security/readhistory",
                "code": "clinics.migrator"
            },
            {
                "system": "https://api.medlinx.online/security/updatebody",
                "code": "clinics.migrator"
            },
            {
                "system": "https://api.medlinx.online/security/owner",
                "code": "clinics.migrator"
            }
        ]
    }
}

Изменение прав доступа

Права досупа могут быть назначены при создании ресурса или командами управления правами доступа.

Для управления доступом сущестует две операции:

  • $meta-add

  • $meta-delete

Права доступа при создании ресурса

При создании ресурса можно явно указать секцию meta.security с указанием дополнительных прав на ресурс. В блоке meta.security каждая секция описывает связку - группа прав и идентификатор пользователя.

Пример секции meta.security для ресурса пациент.

{
    "resourceType": "Patient",
    "meta": {
        "security": [{
                "system": "read",
                "code": "staff_reader"
            }, {
                "system": "read",
                "code": "patient_reader"
            }, {
                "system": "readhistory",
                "code": "superman"
            }, {
                "system": "updatebody",
                "code": "superman"
            }
        ]
    },
    "name": [{
            "family": "Duck",
            "given": ["Donald"]
        }
    ],
    "gender": "male"
}

По умолчанию для ресурса все права есть у владельца.

В поле type должны писаться права вида read, readhistory, updatebody, а не полное название.

Добавление прав доступа

POST fhir/<Resource>/<resource guid>/$meta-add
ИмяLocationОписание
AuthorizationHeaderсм. Авторизация
Content-TypeHeaderapplication/fhir+json
RequestBodyParameters (Fhir Resource)

Request: Object

Пример

{
    "resourceType": "Parameters",
    "id": "<resource guid>",
    "meta": {
        "security": [{
                "system": "<type>",
                "code": "<contragent guid>"
            }
        ]
    }
}

В поле type должны писаться права вида read, readhistory, updatebody, а не полное название.

Удаление прав доступа

POST fhir/<Resource>/<resource guid>/$meta-delete
ИмяLocationОписание
AuthorizationHeaderсм. Авторизация
Content-TypeHeaderapplication/fhir+json
RequestBodyParameters (Fhir Resource)

Request: Object

Пример

{
    "resourceType": "Parameters",
    "id": "<resource guid>",
    "meta": {
        "security": [{
                "system": "<type>",
                "code": "<contragent guid>"
            }
        ]
    }
}

В поле type должны писаться права вида read, readhistory, updatebody, а не полное название.

Удалено будет только значение указанное в поле code.

← Проверка получения токенов по Resource Owner Password Flow на примере клиента PostmanБезопасность →
  • Права доступа при создании ресурса
  • Добавление прав доступа
  • Удаление прав доступа
Medlinx
Docs
ИнтеграцияАвторизация
Copyright © 2024 Medlinx