Мне нужно отфильтровать подписки через зарегистрированных пользователей (т. е. user_id или Organization_id) в общем контексте. Требования заключаются в том, что любые пользователи могут управлять (редактировать или удалять) только своими подписками. Насколько я знаю, нет API для фильтрации подписок по идентификатору пользователя, так как же получить от orion все подписки, добавленные владельцами?
Это хорошее и понятное решение
В любом случае, могу ли я узнать, предвидите ли вы решение этой задачи, прежде чем реализовать мой обходной путь? Большое спасибо
Orion не поддерживает концепцию владения в подписках. Возможным обходным путем может быть использование некоторого описательного поля (в частности, поля description
) и прокси-сервера, подобного PEP, использующего эту информацию для реализации механизма, подобного тому, который вы хотите.
description
пользователя, отправившего запрос на создание.description
.Не идеально, но может быть достаточно для вашего случая. Такой прокси не должен быть сложным для реализации в таких технологиях, как Nodejs.
Я понимаю вашу точку зрения, но я не совсем уверен, справится ли Орион с этим. В соответствии с разделением ответственности, используемым глобальной архитектурой FIWARE, аспекты безопасности (включая аутентификацию и авторизацию, которые очень близки к концепции владения) отвечают за структуру безопасности (состоящую из трех GE: PEP, AC и IDM). ). Хотя надо с осторожностью. Возможно, новая проблема в репозитории Orion (что-то вроде «Реализация права собственности в Orion») может оказаться полезной для обсуждения и должна быть создана там.
Большое спасибо. Возможно, я должен использовать поле описания для другой цели.
Другой обходной путь может заключаться в том, чтобы сохранить в базе данных user_id и subscribe_id, а перед тем, как показать список, отфильтровать по user_id.
Я предпочитаю свое решение, но если вы хотите использовать поле описания, предложенное fgalan, вы можете использовать префикс-постфикс для описания: например, USER_ID-xxxx-END, где xxxx представляет идентификатор. Пожалуйста, обратите внимание на размер описания
Почему бы не использовать метаданные уведомлений для хранения пользователя? Добавление поля «метаданные» в тело уведомления возможно, хотя это, похоже, недокументированная функция.
Эта функция задокументирована в спецификации API NGSIv2 по адресу telefonicaid.github.io/fiware-orion/api/v2/стабильный в разделе «Подписки». Найдите там поле metadata
.
Это интересный вопрос. На мой взгляд, мы можем использовать новый необязательный заголовок (например, fiware-owner), такой как fiware-service и fiware-servicepath, чтобы добавить информацию о владельце (идентификатор пользователя или организации). Таким образом, вы можете отфильтровать все вызовы на v2/subscription, используя этот заголовок, если он существует. Если вы не используете fiware-owner, вы можете получить всю подписку без фильтра (обычное исполнение).