|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Доброго времени суток, друзья. Помогите, пожалуйста, мне. Я замучился... честно... ОЧЕНЬ много информации совершенно не понятной мне. Чуть ли не десятки способов аутентификации, создания модели БД и прочее... Я в этом деле новичек (разработки бизнес-приложений) и очень хочется разобраться в этом всём деле. В общем так: Есть приложение с простой формой Логин-Пароль. Допустим имеется MySQL сервер с базой данных. В нём имеются таблицы... ну пусть Users (со списком всех пользователей, их логинов и паролей (пароли возможно буду кодировать в MD5) - приложению ведь надо как-то аутентифицировать пользователя?) и таблицы с разной информацией. Я хочу создать приложение, которое будет располагаться на хостинге (на том же где и БД), то есть это стандартное веб-SL приложение, и, после проверки достоверности введенных логина и пароля, выдавать соответствующий пользователю контент. В связи с этим, возникает ряд вопросов по поводу безопасности соединения с БД и приложения в целом. Я это вижу так - у БД имеются (минимум) 3 учетные записи - условно пусть будут guest (имеет доступ только чтение только для таблицы Users), user (доступ на чтение остальных таблиц), admin (доступ на запись всех таблиц). Первоначально происходит соединение приложения с БД по записи guest ( Вопрос: пароль и логин для соединение по учетной записи guest, видимо, придется хранить в самом приложении. Это безопасно? Ведь приложение можно скачать с сервера, а, затем, и вскрыть его. Посоветуйте, как тут лучше организовать этот вопрос? ), далее, после проверки на соответствие логина и пароля, программа создаёт новое соединение с бд по учетной записи user или admin (опять таки, где хранить эти пароли для соединения с бд?), и выдаётся соответствующий контент согласно логике работы приложения. Плюс (хотя это минус), я совершенно не представляю как ИМЕННО грамотно произвести соединение с БД. Ручками? Каким-то компонентом? Пожалуйста, посоветуйте безопасные варианты. Теперь - сервис аутентификации. Нужен ли он мне и как его применить здесь? Таким образом, я прошу Вас подсказать мне следующее: 1. Сервис аутентификации. Нужен ли он мне и, если да, то как его применить здесь? 2. Где безопасно хранить (и в каком виде) информацию логина-пароля для соединения с БД? 3. Каким образом наиболее правильно и безопасно совершать соединение с БД? Ну, и, Ваши рекомендации по поводу моего взгляда на работу приложения. Возможно, нужно делать что-то иначе? Я не прошу написать мне весь код (я сам хочу), я прошу помочь разобраться с организацией такого рода приложения. Хотя, какие-то куски кода могли бы и пригодиться. В общем вот так... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2012, 15:32 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
1. Да, нужен, что это и как его готовить прочитайте в книжке, в двух словах это не объяснишь как и ролевой доступ 2. В конфигурационном файле на сервере. 3. Для SL существует RIA services, как стандартная прокладка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2012, 15:59 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
skole1. Да, нужен, что это и как его готовить прочитайте в книжке, в двух словах это не объяснишь как и ролевой доступ 2. В конфигурационном файле на сервере. 3. Для SL существует RIA services, как стандартная прокладка. 2. В конфигурационном файле на сервере. То есть, на самом хостинге? Это REG.RU, я там таких вещей как "конфигурационный файл" не видел. Можно, пожалуйста, подробнее? И потом, почему приложение будет иметь к нему доступ, а, скажем, случайный гость сайта не будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2012, 16:27 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
skole, и потом, обращение из SL приложения к какому-то файлу ведь будет явное в коде... или же дело действительно лишь в доступе этого файла? В таком случае, повторяется вопрос в предыдущем посте... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2012, 16:31 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Mans7skole1. Да, нужен, что это и как его готовить прочитайте в книжке, в двух словах это не объяснишь как и ролевой доступ 2. В конфигурационном файле на сервере. 3. Для SL существует RIA services, как стандартная прокладка. 2. В конфигурационном файле на сервере. То есть, на самом хостинге? Это REG.RU, я там таких вещей как "конфигурационный файл" не видел. Можно, пожалуйста, подробнее? И потом, почему приложение будет иметь к нему доступ, а, скажем, случайный гость сайта не будет? даже не знаю что и ответить, спрашиваете о базовых вещах config ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2012, 16:34 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Для доступа к БД у вас будет логин и пароль, которые будут храниться в конфиге на сервере. Когда клиент запросит SL-приложение его клиентская часть установит вебсервис с сервером. Когда потребуются данные, клиентская часть обратится по вебсервису к серверной части, которая в свою очередь запросит данные из БД согласно ролевому доступу или какой-либо другой политике аутентификации данного клиента. Чтобы не задавать лишних вопросов, прочитайте книжечку с описанием RIA services for Silverlight Если что будет непонятно, здесь вам объяснят. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2012, 17:08 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
pationMans7пропущено... 2. В конфигурационном файле на сервере. То есть, на самом хостинге? Это REG.RU, я там таких вещей как "конфигурационный файл" не видел. Можно, пожалуйста, подробнее? И потом, почему приложение будет иметь к нему доступ, а, скажем, случайный гость сайта не будет? даже не знаю что и ответить, спрашиваете о базовых вещах config Ааа, так речь идет о файле конфигурации ПРИЛОЖЕНИЯ! Я-то подумал о каком-либо спец.файле самого хостинга (или моего сайта этого хостинга). Теперь всё встало на свои места! pation , skole , спасибо Вам большое, обязательно ознакомлюсь с указанной литературой как только смогу! И, если будет необходимо, обращусь ещё раз. Но, теперь, я хотя бы знаю в каком направлении копать - а это уже немало! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2012, 11:16 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
skole2. В конфигурационном файле на сервере. С RIA сервисом в принципе разобрался. Сначала казался легче чем оказалось, но оказалось что не так трудно как тогда когда показался не таким уж и лёгким :)). По делу: почитал что есть такая политика как сохранение инф-ии в этом файле - но как клиенту получить инф-ию из него? В клиентской части SL, на сколько я понял из полученного опыта, невозможно добавить сборку Configuration, в которой все инструкции с работой с этим файлом. Не могли бы подробнее описать как мне следуют использовать конфигурационный файл и обращаться к нему через клиент? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 01:48 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Зачем клиенту получать информацию из конфигурационного файла? Сходи сюда и скачай пример такого сервиса http://code.msdn.microsoft.com/silverlight/Getting-Started-WCF-RIA-1469cbe2 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 10:03 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
skole, а я вот по нему и учился, только в видео формате. Осталось научиться аутентифицировать пользователя и понять и реализовать ролевой доступ. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 17:50 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Ролевой доступ это простая задача, сделай таблицу с ролями в бд, напиши классы с публичными методами для проверки роли пользователя. Затем напиши модуль аутентификации, после аутентификации пользователи будут передавать в http header хэшкод, называется «билет» чтобы сохранять сессию. Все просто и понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 19:06 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
skoleЗатем напиши модуль аутентификации, после аутентификации пользователи будут передавать в http header хэшкод, называется «билет» чтобы сохранять сессию. Все просто и понятно. Не особо просто и понятно... почти везде где есть модуль аутентификации - либо пример на кастомный модуль с нуля (а это слишком сложно для меня), либо готовые примеры на базе ASP.Configuration, а это совершенно не то - т.к. это хранение всех пользователей в конфиге серверной части. У меня же - в бд. Столкнулся с проблемкой.. Сделал соединение с бд, доменный сервис. Пробую сделать аутентификацию. Объявляю класс LoginUser (на клиентской стороне) для проверки введенного логина и пароля. Для удобства отображения данных, делаю в датаформ'е с атрибутами. Класс имеет такой вид: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Всё хорошо. Теперь, вызываю модальное окно LoginWindow в котором имеется разметка XAML отображающая соответствующие поля. Кусок кода этого окна: ( LoginForm - датаформа с 2-мя автосгенерированными полями на основе класса LoginUser) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Вызов этого окна происходит так: Код: c# 1. 2. 3.
Теперь метод вызываемый по закрытию модального окна: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Собственно на этом я и встал... как делать аутентификацию не понимаю... Помогите, пожалуйста, skole . Посмотрел как происходит встроенная аутентификация - ничего не понял, разумеется... Читал уже многие источники - в 8 из 10 случаев рассказывают о ASP конфигурации. Остальные 2 это сильверлайт 3, который, разумеется, уже не актуален, и многие пространства имён и методы либо не нужны, либо куда-то спрятаны и вообще называются теперь по-другому. То есть очередной ненужный труд этих поисков. Хелп... P.S. При вводе данных датаформ автоматически создаёт свою кнопку "ОК", как её можно убрать??? P.P.S. Брейкеры на серверной стороне не работают?? О_о ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 03:36 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Я, кстати, вижу процесс аутентификации тк: при запуске приложение соединяется с бд только с одной таблицей - имена пользователей, их ИД, права и пароли. Далее, пользователь вводит свои логин и пароль -> сервис аутентификации должен сделать поиск по пользователям из бд (а точнее из загруженного списка пользователей), найти этого пользователя, проверить соответствие пароля (пока что пароль будет чистым, чуть позже сделаю хэширование), и выдать программе: либо данные введены неверно, либо показывать пользователю контент, который соответствует его роли/правам. Допустим есть таблица ISN Login Password Rules1 Admin admin adm2 Lex lex member3 John johny moderator И вот, надо как-то сделать вышеуказанный алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 04:55 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Нет тут никакого алгоритма, все примитивно просто. Сначала разложи задачу на подзадачи, проверяй аутентификацию булевым методом, затем узнавай роль данного пользователя. В зависимости от роли раздавай контент. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 05:04 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Мыслишь верно, теперь всю эту логику изложи в коде. Понимаю, что с непривычки это сделать непросто, но надо стараться, скилы затачиваются на задачах. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 05:06 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Урааааа! С помощью ряда кривых и частично нерабочих примерах я всё-таки кое-как сделал аутентификацию по базе данных на основе встроенной!!! Теперь буду пытаться реализовать это не в бизнес-приложении с нуля (там очень много мусора, который мне не нужен). И делов то было на самом деле на раз-два. Первые попытки реализовать это в обычном приложении закончились ошибкой о том, что не инициализирован WebContextBase.Authentication =( Либо просто почищу это бизнес приложение... только чистить придется очень много и очень аккуратно. Вопрос с ходу: не потеряю ли я в безопасности если буду реализовывать это НЕ в бизнес приложении? Может быть, есть какие-то скрытые алгоритмы безопасности? Это реально сложно - научиться этим технологиям с нуля, не имея толкового представления о механизмах этих сервисов... Но - вторые сутки насилия мозга приносят свои плоды! И, хоть их пока мало, это только начало :). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 06:01 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
А встроенный сервис регистрации удалить то не так и легко :(... Ибо он мне не нужен совершенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 07:30 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Вот блин, это бизнес-приложение имеет столько ненужного, а так же недоступного, что хочется сделать свой мембершип и свою аутентификацию - но, боюсь, это уже будет не по зубам мне... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 07:48 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Я официально заявляю что я осёл... Всё-таки нашел как сделать модуль аутентификации, хотя и над ним пришлось несколько часов пыхтеть чтобы понять нюансы. Это оказалось достаточно просто с точки зрения кодинга, после разбора приложения найденного где-то у западных друзей - с говорящим названием "Custom Authentication Sample.zip". Всё гениально и просто оказалось. Базовый функционал теперь я понимаю (вот только зачем ТАК СЛОЖНО сделано в бизнес-приложении?) Вот только что я лично не понял, так это - зачем надо подгонять своего юзера из бд к IUser, который, как я понял, обязан иметь в себе name и password... Я-то хотел бы не держать пароль в свойстве юзера постоянно... Однако, изменив хоть что-нибудь на чууууть-чуть - всё рушится нафиг... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 11:02 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Коллега, себя ослом называть не след – мы есть то, что мы едим. Вот ты и подошел к желаемому результату, теперь хочу обратить твое внимание на то, как грамотно пишутся API. Часто у MS реализация методов скрыта, делается это потому что среднестатистический западный прогер имеет сравнительно слабую подготовку. Поэтому для прогеров такого уровня существуют «решения из коробки». RIA сервис как раз и является таким коробочным решением, включил и поехал. Когда же существует иной сценарий имплементации веб-сервиса, необходимо переопределить стандартные методы. Для этого следует углубиться в стандартную реализацию, например все методы сервиса легко переопределяются в конфигурационном файле, это если нам требуется поменять транспорт или ограничения по умолчанию. Следовательно стандартные authentication & membership провайдеры тоже имеют такие возможности. Если мне память не изменяет в RIA стандартный мембершип можно поменять подобно тому, как это делается в стандартном ASP.NET исполнении, что конечно прибавит хлопот, но MSDN тебе в помощь. Кроме того, ты можешь реализовать свой собственный сервис аутентификации и подключить его в конфиге как и любую другую часть http конвейера. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 13:10 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
WPF, ну, так то оно так... спасибо за сведения. Однако, ещё не всё сделано :). Возникли ещё вопросы по последнему достигнутому успеху: 1. На основе кастомного сервиса аутентификации (а выглядит он просто как обычный доменный сервис, наследуемый от LinqToEntitiesDomainService<MMDatabaseEntities>, IAuthentication<User>. При этом, класс User - он же во-первых, является элементом EntityModel, и, одновременно, объявляется ниже в коде, как public partial class User : IUser . Из-за этого требуется чтобы он имел обязательно поле Name (обязательно ключевое) и поле Password по меньшей мере. Я даже переименовать их не могу. Как бы мне это дело изменить или переопределить? Или же не стоит даже заморачиваться? И тупо обнулить значение Password в классе User после прохождения аутентификации. 2. Вот ещё интересный момент: как мне реализовать повторный вход пользователя, который уже прошел аутентификацию без повторного ввода пароля? Даже если я применю такой вариант аутентификации: Код: c# 1.
Третий атрибут со значением true предполагает реализацию именно этой идеи. Однако, при обновлении страницы, аутентификация слетает. Идём дальше, в бизнес-приложении в App.xaml.cs есть очень приятный примерчик: Код: c# 1. 2. 3. 4. 5. 6. 7.
ОДНАКО! При попытке получить пользователя таким образом, идёт запрос в сервис аутентификации (в моём случае далее в бд) на поиск пользователя вида "МойПК\что-то там". То есть, имя компьютера. Всё это наталкивает на мысль, что в базовом варианте предусмотрена только встроенная проверка подлинности Windows. А надо по-другому, т.к. имя компьютера моей программе абсолютно не интересно. Подскажите, как можно реализовать необходимый мне процесс? 3. Каким образом лучше всего оперировать контентом в соответствии с правами пользователей (из бд)? navigation:Frame + UriMapper (как сделано в бизнес-приложении) - или же есть более удобные способы? Он мне не нравится потому что приходится в коде конкретно указывать страницу перехода: Код: xml 1.
4. Обязательно ли использовать membership провайдер? 5. Ролевой доступ... Достаточно ли было бы сделать его "самопаленным", имея в бд ячейку со словом "admin" или "member" и, в коде C# или XAML, проверяя на соответствие выдавать соответствующий самопаленному уровню доступа контент пользователю. Надеюсь понятно написал. Пока что всё :). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 15:04 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Коллега, вижу тут полную кашу. Во-первых ознакомься со стандартными провайдерами membership (это и есть ролевой доступ) & authentication (логин) для ASP.NET. Эти провайдеры в точности копируют реализацию в SL. Режим аутентификации измени в Forms, чтобы твои пользователи логинились на входе.. Затем определись, что тебя не устраивает в стандартном провайдере этих сервисов. В большинстве случаев их достаточно, смотри внимательно материалы на http://www.asp.net/web-forms/videos/authentication ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 15:49 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
WPF , окей, спасибо. Позже дам о себе знать, как ознакомлюсь с хотя бы частью материалов... И спасибо за ссылку на видеоматериал - так нагляднее, даже на английском. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 17:14 |
|
Silverlight соединение с БД с аутентификацией
|
|||
---|---|---|---|
#18+
Меня бесит что в 95% примерах, а на мсдне это все 100% используется встроенная система мембершипа, в которой есть ряд свойств - имя, пароль, почта, длина чл...на, стафф. При этом изменить этот набор нереально - нужно создавать свой мембершип с нуля если делать всё "по инструкции" через ASP Конфигуратор, в котором, вроде как, удобно создавать пользователей и роли. Вот мне и нужен СВОЙ набор свойств, а не этот мусор.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 18:09 |
|
|
start [/forum/topic.php?fid=21&msg=37987084&tid=1441646]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
105ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 343ms |
total: | 559ms |
0 / 0 |