Nano Hash - криптовалюты, майнинг, программирование

Проектирование и безопасность на основе домена

Это связано с этим вопросом, который, кажется, задавался некоторое время назад. Реализация безопасности в проекте, который придерживается основных принципов дизайна, управляемого доменом. позвольте мне привести пример

Банковская система:
Вариант использования: вносится новый банковский перевод, который требует одобрения, поскольку это первый платеж.

а. Клерк может автоматически авторизоваться, если сумма депозита составляет ‹5000
b. Менеджер может быть двух типов - Банковский менеджер / Аккаунт-менеджер. ТОЛЬКО менеджер аккаунта может авторизовать любые аккаунты с депозитом >5000

Мои опасения заключаются в следующем (пожалуйста, исправьте, если сама проблема верна)

  1. Не уверен, где я должен построить эту следующую логику - позаботится о проверке того, имеет ли вошедший в систему пользователь разрешение на выполнение определенных действий с учетом его титула - (в этом случае менеджер учетных записей). Авторизация - это вариант использования, но уровень безопасности, похоже, хорошо знает объект домена.
  2. В общем Авторизация (не аутентификация). Я знаю, что аутентификация на основе ролей поможет, но вопрос в том, «где» — на каком уровне и в каком потоке вызовов. Должен ли уровень пользовательского интерфейса обращаться к какому-либо уровню безопасности или уровень предметной области будет проверять себя для всех возможных комбинаций?

Пожалуйста помоги. Это очень запутанно.

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

Ваше здоровье


Ответы:


1

Безопасность — сквозная особенность дизайна, которая может влиять на все классы, методы и свойства.

С точки зрения DDD вы должны использовать спецификации и роли.

Где и как эти спецификации реализуются, зависит от вашей архитектуры. Вы можете использовать аспекты, вы можете использовать встроенные вызовы, события и т. д.

Вот несколько ссылок, которые я хотел бы проверить относительно безопасности и ролей:

30.03.2011
  • Спасибо за быстрый ответ. Я смотрю. 31.03.2011
  • Спасибо за быстрый ответ. RBAC был интересной ссылкой, но я больше смотрел на некоторые примеры/быстрые интерфейсы/классы, которые дали бы мне представление о том, как это может выглядеть. Новичок здесь, теоретически может получить это. Практически по лестнице обучения. 31.03.2011
  • Я использую класс ISecurity.Authorize(string userID), который вызывается каждым методом при выполнении CRUD. Авторизация проверяет, прошел ли пользователь проверку подлинности и владеет ли он объектом, который обновляется, или является ли он администратором. 02.04.2011
  • Слишком поздно, когда упорствуют. Вы должны выполнить авторизацию перед выполнением логики домена. Не после выполнения логики и попытки упорствовать 27.12.2011
  • Спустя год я согласен с mynkow. Казалось бы, авторизация пользователя на выполнение действия принадлежит прикладному, а не доменному слою. 27.01.2013
  • @tuespetre он имел в виду уровень сохраняемости / инфраструктуры (имеется в виду после создания объекта домена). На мой взгляд, авторизация — это слишком расплывчатый/общий термин. На самом деле пример в вопросе - это доменная логика. Должен обрабатываться в домене 22.05.2014
  • @Tudor Еще через год и несколько месяцев я должен сказать, что согласен с вами обоими. Вопрос описывает правила, которые должны быть смоделированы в домене, но уровень приложения/службы отвечает за координацию взаимодействия между объектами домена и, таким образом, гарантирует, что логика авторизации действительно вызывается. 22.05.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..