powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight соединение с БД с аутентификацией
25 сообщений из 37, страница 1 из 2
Silverlight соединение с БД с аутентификацией
    #37983893
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, друзья. Помогите, пожалуйста, мне. Я замучился... честно... ОЧЕНЬ много информации совершенно не понятной мне. Чуть ли не десятки способов аутентификации, создания модели БД и прочее... Я в этом деле новичек (разработки бизнес-приложений) и очень хочется разобраться в этом всём деле.

В общем так: Есть приложение с простой формой Логин-Пароль. Допустим имеется MySQL сервер с базой данных. В нём имеются таблицы... ну пусть Users (со списком всех пользователей, их логинов и паролей (пароли возможно буду кодировать в MD5) - приложению ведь надо как-то аутентифицировать пользователя?) и таблицы с разной информацией. Я хочу создать приложение, которое будет располагаться на хостинге (на том же где и БД), то есть это стандартное веб-SL приложение, и, после проверки достоверности введенных логина и пароля, выдавать соответствующий пользователю контент.

В связи с этим, возникает ряд вопросов по поводу безопасности соединения с БД и приложения в целом. Я это вижу так - у БД имеются (минимум) 3 учетные записи - условно пусть будут guest (имеет доступ только чтение только для таблицы Users), user (доступ на чтение остальных таблиц), admin (доступ на запись всех таблиц). Первоначально происходит соединение приложения с БД по записи guest ( Вопрос: пароль и логин для соединение по учетной записи guest, видимо, придется хранить в самом приложении. Это безопасно? Ведь приложение можно скачать с сервера, а, затем, и вскрыть его. Посоветуйте, как тут лучше организовать этот вопрос? ), далее, после проверки на соответствие логина и пароля, программа создаёт новое соединение с бд по учетной записи user или admin (опять таки, где хранить эти пароли для соединения с бд?), и выдаётся соответствующий контент согласно логике работы приложения.

Плюс (хотя это минус), я совершенно не представляю как ИМЕННО грамотно произвести соединение с БД. Ручками? Каким-то компонентом? Пожалуйста, посоветуйте безопасные варианты.

Теперь - сервис аутентификации. Нужен ли он мне и как его применить здесь?

Таким образом, я прошу Вас подсказать мне следующее:
1. Сервис аутентификации. Нужен ли он мне и, если да, то как его применить здесь?
2. Где безопасно хранить (и в каком виде) информацию логина-пароля для соединения с БД?
3. Каким образом наиболее правильно и безопасно совершать соединение с БД?

Ну, и, Ваши рекомендации по поводу моего взгляда на работу приложения. Возможно, нужно делать что-то иначе? Я не прошу написать мне весь код (я сам хочу), я прошу помочь разобраться с организацией такого рода приложения. Хотя, какие-то куски кода могли бы и пригодиться. В общем вот так...
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37983965
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Да, нужен, что это и как его готовить прочитайте в книжке, в двух словах это не объяснишь как и ролевой доступ
2. В конфигурационном файле на сервере.
3. Для SL существует RIA services, как стандартная прокладка.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37984039
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skole1. Да, нужен, что это и как его готовить прочитайте в книжке, в двух словах это не объяснишь как и ролевой доступ
2. В конфигурационном файле на сервере.
3. Для SL существует RIA services, как стандартная прокладка.
2. В конфигурационном файле на сервере.
То есть, на самом хостинге? Это REG.RU, я там таких вещей как "конфигурационный файл" не видел. Можно, пожалуйста, подробнее? И потом, почему приложение будет иметь к нему доступ, а, скажем, случайный гость сайта не будет?
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37984057
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skole, и потом, обращение из SL приложения к какому-то файлу ведь будет явное в коде... или же дело действительно лишь в доступе этого файла? В таком случае, повторяется вопрос в предыдущем посте...
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37984065
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mans7skole1. Да, нужен, что это и как его готовить прочитайте в книжке, в двух словах это не объяснишь как и ролевой доступ
2. В конфигурационном файле на сервере.
3. Для SL существует RIA services, как стандартная прокладка.
2. В конфигурационном файле на сервере.
То есть, на самом хостинге? Это REG.RU, я там таких вещей как "конфигурационный файл" не видел. Можно, пожалуйста, подробнее? И потом, почему приложение будет иметь к нему доступ, а, скажем, случайный гость сайта не будет?
даже не знаю что и ответить, спрашиваете о базовых вещах
config
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37984141
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для доступа к БД у вас будет логин и пароль, которые будут храниться в конфиге на сервере. Когда клиент запросит SL-приложение его клиентская часть установит вебсервис с сервером. Когда потребуются данные, клиентская часть обратится по вебсервису к серверной части, которая в свою очередь запросит данные из БД согласно ролевому доступу или какой-либо другой политике аутентификации данного клиента.
Чтобы не задавать лишних вопросов, прочитайте книжечку с описанием RIA services for Silverlight Если что будет непонятно, здесь вам объяснят.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37985028
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationMans7пропущено...

2. В конфигурационном файле на сервере.
То есть, на самом хостинге? Это REG.RU, я там таких вещей как "конфигурационный файл" не видел. Можно, пожалуйста, подробнее? И потом, почему приложение будет иметь к нему доступ, а, скажем, случайный гость сайта не будет?
даже не знаю что и ответить, спрашиваете о базовых вещах
config
Ааа, так речь идет о файле конфигурации ПРИЛОЖЕНИЯ! Я-то подумал о каком-либо спец.файле самого хостинга (или моего сайта этого хостинга). Теперь всё встало на свои места!

pation , skole , спасибо Вам большое, обязательно ознакомлюсь с указанной литературой как только смогу! И, если будет необходимо, обращусь ещё раз. Но, теперь, я хотя бы знаю в каком направлении копать - а это уже немало!
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986246
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skole2. В конфигурационном файле на сервере.
С RIA сервисом в принципе разобрался. Сначала казался легче чем оказалось, но оказалось что не так трудно как тогда когда показался не таким уж и лёгким :)).

По делу: почитал что есть такая политика как сохранение инф-ии в этом файле - но как клиенту получить инф-ию из него? В клиентской части SL, на сколько я понял из полученного опыта, невозможно добавить сборку Configuration, в которой все инструкции с работой с этим файлом. Не могли бы подробнее описать как мне следуют использовать конфигурационный файл и обращаться к нему через клиент?
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986304
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем клиенту получать информацию из конфигурационного файла?
Сходи сюда и скачай пример такого сервиса http://code.msdn.microsoft.com/silverlight/Getting-Started-WCF-RIA-1469cbe2
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986503
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skole, а я вот по нему и учился, только в видео формате. Осталось научиться аутентифицировать пользователя и понять и реализовать ролевой доступ.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986537
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролевой доступ это простая задача, сделай таблицу с ролями в бд, напиши классы с публичными методами для проверки роли пользователя. Затем напиши модуль аутентификации, после аутентификации пользователи будут передавать в http header хэшкод, называется «билет» чтобы сохранять сессию. Все просто и понятно.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986843
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skoleЗатем напиши модуль аутентификации, после аутентификации пользователи будут передавать в http header хэшкод, называется «билет» чтобы сохранять сессию. Все просто и понятно.
Не особо просто и понятно... почти везде где есть модуль аутентификации - либо пример на кастомный модуль с нуля (а это слишком сложно для меня), либо готовые примеры на базе ASP.Configuration, а это совершенно не то - т.к. это хранение всех пользователей в конфиге серверной части. У меня же - в бд.

Столкнулся с проблемкой.. Сделал соединение с бд, доменный сервис. Пробую сделать аутентификацию. Объявляю класс LoginUser (на клиентской стороне) для проверки введенного логина и пароля. Для удобства отображения данных, делаю в датаформ'е с атрибутами. Класс имеет такой вид:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
namespace BusinessApplication6
{
    public class LoginUser
    {
        [Display(Name = "Имя пользователя:")]
        public string Login { get; set; }

        [Display(Name = "Пароль:")]
        public string Password { get; set; }
    }
}


Всё хорошо. Теперь, вызываю модальное окно 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.
        public LoginUser lu { get; set; }

        public LoginWindow()
        {
            InitializeComponent();

            lu = new LoginUser();
            LoginForm.CurrentItem = lu;
            LoginForm.BeginEdit();
        }

        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            LoginForm.CommitEdit();
            this.DialogResult = true;
        }

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            lu = null;
            LoginForm.CancelEdit();
            this.DialogResult = false;
        }



Вызов этого окна происходит так:
Код: c#
1.
2.
3.
            var lw = new LoginWindow();
            lw.Closed += new System.EventHandler(lw_Closed);
            lw.Show();



Теперь метод вызываемый по закрытию модального окна:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        void lw_Closed(object sender, System.EventArgs e)
        {
            var usr = (LoginWindow)sender;
            if (usr.lu != null)
            {
                //теперь нужно отправить полученные данные аутентификатору
            }
        }



Собственно на этом я и встал... как делать аутентификацию не понимаю... Помогите, пожалуйста, skole . Посмотрел как происходит встроенная аутентификация - ничего не понял, разумеется... Читал уже многие источники - в 8 из 10 случаев рассказывают о ASP конфигурации. Остальные 2 это сильверлайт 3, который, разумеется, уже не актуален, и многие пространства имён и методы либо не нужны, либо куда-то спрятаны и вообще называются теперь по-другому. То есть очередной ненужный труд этих поисков. Хелп...

P.S. При вводе данных датаформ автоматически создаёт свою кнопку "ОК", как её можно убрать???
P.P.S. Брейкеры на серверной стороне не работают?? О_о
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986849
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, кстати, вижу процесс аутентификации тк: при запуске приложение соединяется с бд только с одной таблицей - имена пользователей, их ИД, права и пароли. Далее, пользователь вводит свои логин и пароль -> сервис аутентификации должен сделать поиск по пользователям из бд (а точнее из загруженного списка пользователей), найти этого пользователя, проверить соответствие пароля (пока что пароль будет чистым, чуть позже сделаю хэширование), и выдать программе: либо данные введены неверно, либо показывать пользователю контент, который соответствует его роли/правам.

Допустим есть таблица
ISN Login Password Rules1 Admin admin adm2 Lex lex member3 John johny moderator
И вот, надо как-то сделать вышеуказанный алгоритм.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986850
WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет тут никакого алгоритма, все примитивно просто. Сначала разложи задачу на подзадачи, проверяй аутентификацию булевым методом, затем узнавай роль данного пользователя. В зависимости от роли раздавай контент. Все.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986851
WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мыслишь верно, теперь всю эту логику изложи в коде. Понимаю, что с непривычки это сделать непросто, но надо стараться, скилы затачиваются на задачах.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986855
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Урааааа! С помощью ряда кривых и частично нерабочих примерах я всё-таки кое-как сделал аутентификацию по базе данных на основе встроенной!!! Теперь буду пытаться реализовать это не в бизнес-приложении с нуля (там очень много мусора, который мне не нужен). И делов то было на самом деле на раз-два.

Первые попытки реализовать это в обычном приложении закончились ошибкой о том, что не инициализирован WebContextBase.Authentication =(

Либо просто почищу это бизнес приложение... только чистить придется очень много и очень аккуратно.

Вопрос с ходу: не потеряю ли я в безопасности если буду реализовывать это НЕ в бизнес приложении? Может быть, есть какие-то скрытые алгоритмы безопасности?

Это реально сложно - научиться этим технологиям с нуля, не имея толкового представления о механизмах этих сервисов... Но - вторые сутки насилия мозга приносят свои плоды! И, хоть их пока мало, это только начало :).
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986861
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А встроенный сервис регистрации удалить то не так и легко :(... Ибо он мне не нужен совершенно.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986863
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот блин, это бизнес-приложение имеет столько ненужного, а так же недоступного, что хочется сделать свой мембершип и свою аутентификацию - но, боюсь, это уже будет не по зубам мне...
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986905
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я официально заявляю что я осёл... Всё-таки нашел как сделать модуль аутентификации, хотя и над ним пришлось несколько часов пыхтеть чтобы понять нюансы. Это оказалось достаточно просто с точки зрения кодинга, после разбора приложения найденного где-то у западных друзей - с говорящим названием "Custom Authentication Sample.zip". Всё гениально и просто оказалось. Базовый функционал теперь я понимаю (вот только зачем ТАК СЛОЖНО сделано в бизнес-приложении?)

Вот только что я лично не понял, так это - зачем надо подгонять своего юзера из бд к IUser, который, как я понял, обязан иметь в себе name и password... Я-то хотел бы не держать пароль в свойстве юзера постоянно... Однако, изменив хоть что-нибудь на чууууть-чуть - всё рушится нафиг...
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37986964
WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллега, себя ослом называть не след – мы есть то, что мы едим. Вот ты и подошел к желаемому результату, теперь хочу обратить твое внимание на то, как грамотно пишутся API. Часто у MS реализация методов скрыта, делается это потому что среднестатистический западный прогер имеет сравнительно слабую подготовку. Поэтому для прогеров такого уровня существуют «решения из коробки». RIA сервис как раз и является таким коробочным решением, включил и поехал. Когда же существует иной сценарий имплементации веб-сервиса, необходимо переопределить стандартные методы. Для этого следует углубиться в стандартную реализацию, например все методы сервиса легко переопределяются в конфигурационном файле, это если нам требуется поменять транспорт или ограничения по умолчанию. Следовательно стандартные authentication & membership провайдеры тоже имеют такие возможности. Если мне память не изменяет в RIA стандартный мембершип можно поменять подобно тому, как это делается в стандартном ASP.NET исполнении, что конечно прибавит хлопот, но MSDN тебе в помощь. Кроме того, ты можешь реализовать свой собственный сервис аутентификации и подключить его в конфиге как и любую другую часть http конвейера.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37987055
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WPF, ну, так то оно так... спасибо за сведения. Однако, ещё не всё сделано :).

Возникли ещё вопросы по последнему достигнутому успеху:

1. На основе кастомного сервиса аутентификации (а выглядит он просто как обычный доменный сервис, наследуемый от LinqToEntitiesDomainService<MMDatabaseEntities>, IAuthentication<User>. При этом, класс User - он же во-первых, является элементом EntityModel, и, одновременно, объявляется ниже в коде, как public partial class User : IUser . Из-за этого требуется чтобы он имел обязательно поле Name (обязательно ключевое) и поле Password по меньшей мере. Я даже переименовать их не могу. Как бы мне это дело изменить или переопределить? Или же не стоит даже заморачиваться? И тупо обнулить значение Password в классе User после прохождения аутентификации.

2. Вот ещё интересный момент: как мне реализовать повторный вход пользователя, который уже прошел аутентификацию без повторного ввода пароля? Даже если я применю такой вариант аутентификации:
Код: c#
1.
.Login(new LoginParameters(sUserName, sUserPassword, true, null));


Третий атрибут со значением true предполагает реализацию именно этой идеи. Однако, при обновлении страницы, аутентификация слетает. Идём дальше, в бизнес-приложении в App.xaml.cs есть очень приятный примерчик:
Код: c#
1.
2.
3.
4.
5.
6.
7.
private void Application_Startup(object sender, StartupEventArgs e)
        {
            ...
            // Пользователь будет проходить проверку подлинности автоматически, если используется проверка подлинности Windows или в предыдущий раз был установлен флажок "Запомнить пароль".
            WebContext.Current.Authentication.LoadUser(this.Application_UserLoaded, null);
            ...
        }


ОДНАКО! При попытке получить пользователя таким образом, идёт запрос в сервис аутентификации (в моём случае далее в бд) на поиск пользователя вида "МойПК\что-то там". То есть, имя компьютера. Всё это наталкивает на мысль, что в базовом варианте предусмотрена только встроенная проверка подлинности Windows. А надо по-другому, т.к. имя компьютера моей программе абсолютно не интересно. Подскажите, как можно реализовать необходимый мне процесс?

3. Каким образом лучше всего оперировать контентом в соответствии с правами пользователей (из бд)? navigation:Frame + UriMapper (как сделано в бизнес-приложении) - или же есть более удобные способы? Он мне не нравится потому что приходится в коде конкретно указывать страницу перехода:
Код: xml
1.
ContentFrame.Navigate(new Uri("/Page2", UriKind.Relative));



4. Обязательно ли использовать membership провайдер?

5. Ролевой доступ... Достаточно ли было бы сделать его "самопаленным", имея в бд ячейку со словом "admin" или "member" и, в коде C# или XAML, проверяя на соответствие выдавать соответствующий самопаленному уровню доступа контент пользователю. Надеюсь понятно написал.

Пока что всё :).
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37987084
WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллега, вижу тут полную кашу. Во-первых ознакомься со стандартными провайдерами membership (это и есть ролевой доступ) & authentication (логин) для ASP.NET. Эти провайдеры в точности копируют реализацию в SL. Режим аутентификации измени в Forms, чтобы твои пользователи логинились на входе.. Затем определись, что тебя не устраивает в стандартном провайдере этих сервисов. В большинстве случаев их достаточно, смотри внимательно материалы на http://www.asp.net/web-forms/videos/authentication
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37987136
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WPF , окей, спасибо. Позже дам о себе знать, как ознакомлюсь с хотя бы частью материалов... И спасибо за ссылку на видеоматериал - так нагляднее, даже на английском.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37987162
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня бесит что в 95% примерах, а на мсдне это все 100% используется встроенная система мембершипа, в которой есть ряд свойств - имя, пароль, почта, длина чл...на, стафф. При этом изменить этот набор нереально - нужно создавать свой мембершип с нуля если делать всё "по инструкции" через ASP Конфигуратор, в котором, вроде как, удобно создавать пользователей и роли.

Вот мне и нужен СВОЙ набор свойств, а не этот мусор..
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37987231
WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Твой набор свойств сильно отличается от стандартного? Очень сомневаюсь. Ну, а если даже и так, написать собственный провайдер несложно, это же всего парочка классов.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight соединение с БД с аутентификацией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]