Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программная авторизация в asp.net приложении 
V
    Опции темы
no0b
Дата 7.11.2013, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2013

Репутация: нет
Всего: нет



Имеется приложение asp, состоящее из 2-х страниц логин и отчет. Отчет виден только авторизованным пользователям.
Авторизация работает следующим образом:
пользователь вводит логин пароль на страничек логин и жмет ок
в обработчике события приложение обращается в базу 
если логин и пароль верные в сессию записывается что пользователь авторизован
редирект на отчет
отчет проверяет пользователя в сессии если все ок грузим отчет

Вопрос:
Как можно передавать логин и пароль и запускать авторизацию из приложения win forms. Есть способ с передачей логина пароля через строку запроса, мне этот способ кажется не очень безопасным ибо строку эту можно скопировать, к примеру, из истории. Подскажите куда копать?
PM MAIL   Вверх
jonie
Дата 7.11.2013, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



Какой метод авторизации вообще используется?

Подработаю читателем мыслей:
Forms authentification поди? Тогда вам надо всего лишь сделать POST (обычно) запрос с логином и паролем (точно также как делает браузер), получить в ответ с секретными куками и далее эти куки подсовывать в каждый запрос что вы исполняете.
В качестве клиента можно использовать HttpClient
Пример установки кукисов ему: http://stackoverflow.com/questions/1237373...prequestmessage

Хотя зачастую делают еще дополнительно authenticationService ..

Это сообщение отредактировал(а) jonie - 7.11.2013, 10:43


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
no0b
Дата 7.11.2013, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2013

Репутация: нет
Всего: нет



Forms authentification буду теперь использовать  smile . Из winforms приложения открывать отчет предполагается вот так:
Код

string link = e.Item.Tag.ToString();
System.Diagnostics.Process.Start(link);


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

Это сообщение отредактировал(а) no0b - 7.11.2013, 11:03
PM MAIL   Вверх
jonie
Дата 8.11.2013, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



Цитата(no0b @  7.11.2013,  11:59 Найти цитируемый пост)
Из winforms приложения открывать отчет предполагается вот так:

ну тогда запускаться будет браузер, стало быть запустить его можно только передав URL туда, где в GET параметрах прошить логин и пароль и правильно эту ситуацию на серверной стороне обработать:
1) если у вас cookie-state аутентификация, тогда сервер увидит что куков нет (предположим что браузер их не содержит), перебросит (http 302) вас при настройках по умолчанию asp.net на страничку авторизации, куда в GET параметре ReturnUrl будет начальный url который вы передали. Из него можно выцепить логин-пароль, обработать в обработчике загрузки страницы и произвести авторизацию и если она успешна вызвать FormsAuthentication.SetAuthCookie и вернув юзеру HTTP 302 с Url-ом, равным GET параметру ReturnUrl. Перейдя по которому браузер отошлёт аутентифкационную куку, система аутентификации сможет аутентифицировать по ней юзера и покажет отчет.

2) если у вас cookie-less аутентификция, тогда можно из WinForms приложения пройти авторизацию (методику я указал), получить идентификатор сессии, который передаётся через GET параметр и уже при запуске браузера в Url подмешивать этот самый идентификатор.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
no0b
Дата 8.11.2013, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2013

Репутация: нет
Всего: нет



Если первым способом то в истории браузера может остаться get запрос с сохраненными логином и паролем?
Второй способ:
в winforms послать get запрос странички логин с параметрами логин пароль  с помощью HttpClient->
в обработчике page_load странички логин, проверить логин и пароль, сгенерить ид отослать его в куках пользователю и  сохранить, в какую то глобальную переменную (типо листа активных сессий)->
на стороне winforms приложения получить из куков ид и открыть (уже в браузере) логин с параметром ид сесии -> 
опять же в page_load логина, проверить ид сесии, если он в листе выданных, то все ок и редирект на отчет. Так? smile 

Это сообщение отредактировал(а) no0b - 8.11.2013, 14:02
PM MAIL   Вверх
jonie
Дата 8.11.2013, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



Цитата(no0b @  8.11.2013,  15:00 Найти цитируемый пост)

в winforms послать get запрос странички логин с параметрами логин пароль  с помощью HttpClient-

обыкновенно все же POST используют, но это уже от крисовти рук реализующего..

Цитата(no0b @  8.11.2013,  15:00 Найти цитируемый пост)
в обработчике page_load странички логин, проверить логин и пароль, сгенерить ид отослать его в куках пользователю и  сохранить, в какую то глобальную переменную (типо листа активных сессий)->

не в куках, читайте про cookieless аутентификацию  - она из коробки поддерживается.



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
no0b
Дата 12.11.2013, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2013

Репутация: нет
Всего: нет



Сделал аутентификацию описанным мною способом с обычными куками. 
Прием и ответ на post запрос организовал через generic handler.
При пост запросе generic handler принимает логин пароль ищет юзера и создает ид если все ок, который отдает пользователю и записывает в статический лист залогиненных юзеров, юзеру.
После форма логина открывается с параметром этим (временным ид) по нему юзер заходит и стирается он, так что второй раз по нему не зайти. Большое спасибо за инфу!





Это сообщение отредактировал(а) no0b - 12.11.2013, 15:54
PM MAIL   Вверх
jonie
Дата 12.11.2013, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



Ну я бы все-таки делал cookieless аутентикацию ... ибо вот это:
Цитата


При пост запросе generic handler принимает логин пароль ищет юзера и создает ид если все ок, который отдает пользователю и записывает в статический лист залогиненных юзеров, юзеру.
 оно как раз и делает (id сессии и её статус).

пример в аттаче

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  WebApplication2.rar 6,69 Kb


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
no0b
Дата 13.11.2013, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2013

Репутация: нет
Всего: нет



Код

if (Session["SUPER_SECRET"] != "42")
        {
            FormsAuthentication.SignOut();
        }

        Session.Abandon();
        base.OnPreLoad(e);


Насчет одноразового доступа в примере, сессия же по ид определяется, который в куках лежит, тогда и сессию толе нужно делать cookieless.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.