Как получить от Orion все подписки, вставленные владельцами

Мне нужно отфильтровать подписки через зарегистрированных пользователей (т. е. user_id или Organization_id) в общем контексте. Требования заключаются в том, что любые пользователи могут управлять (редактировать или удалять) только своими подписками. Насколько я знаю, нет API для фильтрации подписок по идентификатору пользователя, так как же получить от orion все подписки, добавленные владельцами?

Это интересный вопрос. На мой взгляд, мы можем использовать новый необязательный заголовок (например, fiware-owner), такой как fiware-service и fiware-servicepath, чтобы добавить информацию о владельце (идентификатор пользователя или организации). Таким образом, вы можете отфильтровать все вызовы на v2/subscription, используя этот заголовок, если он существует. Если вы не используете fiware-owner, вы можете получить всю подписку без фильтра (обычное исполнение).

pasquy73 17.07.2019 17:37

Это хорошее и понятное решение

Domenica 17.07.2019 18:14

В любом случае, могу ли я узнать, предвидите ли вы решение этой задачи, прежде чем реализовать мой обходной путь? Большое спасибо

Domenica 23.07.2019 09:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Orion не поддерживает концепцию владения в подписках. Возможным обходным путем может быть использование некоторого описательного поля (в частности, поля description) и прокси-сервера, подобного PEP, использующего эту информацию для реализации механизма, подобного тому, который вы хотите.

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

Не идеально, но может быть достаточно для вашего случая. Такой прокси не должен быть сложным для реализации в таких технологиях, как Nodejs.

Я понимаю вашу точку зрения, но я не совсем уверен, справится ли Орион с этим. В соответствии с разделением ответственности, используемым глобальной архитектурой FIWARE, аспекты безопасности (включая аутентификацию и авторизацию, которые очень близки к концепции владения) отвечают за структуру безопасности (состоящую из трех GE: PEP, AC и IDM). ). Хотя надо с осторожностью. Возможно, новая проблема в репозитории Orion (что-то вроде «Реализация права собственности в Orion») может оказаться полезной для обсуждения и должна быть создана там.

fgalan 17.07.2019 17:37

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

Domenica 17.07.2019 17:48

Другой обходной путь может заключаться в том, чтобы сохранить в базе данных user_id и subscribe_id, а перед тем, как показать список, отфильтровать по user_id.

pasquy73 17.07.2019 17:51

Я предпочитаю свое решение, но если вы хотите использовать поле описания, предложенное fgalan, вы можете использовать префикс-постфикс для описания: например, USER_ID-xxxx-END, где xxxx представляет идентификатор. Пожалуйста, обратите внимание на размер описания

pasquy73 17.07.2019 18:12

Почему бы не использовать метаданные уведомлений для хранения пользователя? Добавление поля «метаданные» в тело уведомления возможно, хотя это, похоже, недокументированная функция.

cdupont 13.09.2019 12:42

Эта функция задокументирована в спецификации API NGSIv2 по адресу telefonicaid.github.io/fiware-orion/api/v2/стабильный в разделе «Подписки». Найдите там поле metadata.

fgalan 16.09.2019 20:05

Другие вопросы по теме