Я ошибаюсь, желая развернуть свою собственную систему Аутентификации / Авторизации, учитывая следующие требования? - PullRequest
2 голосов
/ 07 декабря 2009

В моем любимом проекте я хочу иметь пользовательскую систему со следующими требованиями:

  • Он должен работать с Db4o в качестве модели сопротивления
  • Я хочу использовать DI (с помощью Турбина ) для доставки необходимых зависимостей в мою модель пользователя
  • Это должно быть легко подключить к asp.net-mvc
  • Это должно быть тестируемым без особых хлопот
  • Он должен поддерживать анонимных пользователей так же, как SO
  • Я хочу разделить Аутентификацию и Авторизацию (первый может жить без второго)
  • Это должно быть безопасно

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

На полпути круче себя, я понял, что, вероятно, страдаю некоторым синдромом NIH .
Поскольку мне не очень нравится, насколько бесполезно сложна существующая пользовательская среда в asp.net, на самом деле это всего лишь все более сложные вещи, касающиеся безопасности, которые теперь вызывают у меня некоторые сомнения. Будет ли оправданным идти дальше и катиться мой? Если нет, то как вы будете выполнять все вышеуказанные требования с существующей структурой, основанной на IPrinciple?

Ответы [ 4 ]

5 голосов
/ 07 декабря 2009

Для меня это звучит так, как будто вы хотите создать свой собственный пользовательский поставщик членства .NET.

Это позволит вам использовать встроенную аутентификацию ASP.NET / Авторизация атрибут s в ваших действиях контроллера, предоставляя вам полный контроль над реализацией внутри провайдера (который позволит вам закодировать его в соответствии с требованиями, указанными выше).

Прямой от MSDN ...

Реализация поставщика членства

1 голос
/ 07 декабря 2009

Я тоже работаю над Pet Project, используя ASP.net MVC и db4o, и сделал то же самое, так что вы, по крайней мере, не одиноки в этом пути :). Одна из главных причин, по которой я начал играть с db4o в качестве слоя персистентности, заключается в том, что, особенно если вы получаете доступ к полевому уровню (т. Е. Мне разрешено видеть имя человека А, но не имя человека Б), нужно добиться, если вынуждены в сложные операторы SQL и анемичной модели предметной области.

Поскольку у меня были сложные потребности в авторизации, которые нужно было сохранять (и синхронизировать) в индексах db4o и Solr, я начал работать над развертыванием своего собственного, но только потому, что заранее знал, что это была одна из ключевых особенностей моего питомца. проект, который я хотел 100% контроля.

Теперь я все еще могу использовать провайдера .Net Membership для аутентификации, но не (исключительно) для авторизации объектов, а только после того, как я получу разрешение на авторизацию, используя мою собственную.

1 голос
/ 07 декабря 2009

Я думаю, вы понимаете, где находятся ваши тонкие части: именно в том, что вы включили, как сделать то, что вы делаете, как мотив, почему вы делаете это и NIH (смешно: я бы никогда видел что раньше) выпуск.

Если оставить в стороне, ваш провайдер - это то, что вы потенциально можете использовать повторно, и это может упростить некоторые ваши будущие усилия. Это также должно помочь вам более подробно ознакомиться с этой проблемой. Пока вы понимаете структуру ASP.NET, чтобы вы могли работать с ней тоже, если вам нужно (и вы не специализированы таким образом, что не знаете, что делаете, если не используете свой инструмент), тогда я верю, что вы уже создали свою защиту.

Как уже упоминалось в DOK, будьте осторожны, чтобы не бросать здесь свои собственные задачи, чтобы избежать более сложной задачи, какой бы ни была ваша другая функциональность. Не позволяйте этому отвлекать внимание: оно должно быть тем, что действительно необходимо вашему приложению. Если это не так, я бы вместо этого сосредоточился на основной миссии вашего программного обеспечения.

1 голос
/ 07 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...