Описание
Назначение пользователей частичному списку объектов ресурсов для ограничения доступа (или видимости) довольно распространено (например, назначение устройств пользователю).
В настоящее время мы реализовали авторизацию на уровне REST API на основе ресурса (/devices
) вместе с глаголами http (GET
, POST
и т. Д.) Для управления доступом для чтения и записи. Но это позволяет пользователям управлять либо всеми устройствами, либо ничего.
Решение № 1
device-service
сам поддерживает связи между пользовательским устройством и выполняет фильтрацию на основе userId
, извлеченного из токена аутентификации на лету.
Минусы: Это создаст зависимость между device
и account
сервисами. Также нам придется повторить эту реализацию для других типов объектов в их собственных сервисах.
Решение № 2
Реализация связей между пользовательскими устройствами на уровне шлюза API. Таким образом, сервисам просто необходимо обеспечить фильтрацию по userId
, которая становится для них необязательной. Также нет необходимости извлекать userId из токена авторизации.
Минусы: это решение обременяет шлюз API проверкой ассоциаций.
Существует ли лучший или стандартный подход к управлению такого рода доступом к элементам на уровне ресурсов в микросервисах?