powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / System.Web.Security
25 сообщений из 31, страница 1 из 2
System.Web.Security
    #38003620
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача заключается в следующем, необходимо "расширить" функционал System.Web.Security.Membership (или каким-то другим спостобом реализовать), а именно нужно добавить возможность регистрации и аутентификации пользователя с помоцью ключа ЕЦП дополнительно к уже существующим способам.

На уровне модеои БД - это еще +1 табличка с сертификатами пользователей. При входе или регистрации пользователь просто предоставляет этот самый сертификат в систему. Технология ASP .NET MVC4.

Направте, пожалуйста по правильному пути :)
...
Рейтинг: 0 / 0
System.Web.Security
    #38003629
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем еще одна табличка? Есть же профили.
Во-вторых, если MVC4, то стоит глянуть SimpleMembershipProvider (WebMatrix.WebData). Там профильную таблицу можно атрибутивно расширять, а не как это сделано в убогом aspnet_Profile.
...
Рейтинг: 0 / 0
System.Web.Security
    #38003637
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА зачем еще одна табличка? Есть же профили...Ну это, как его... это превое что пришло в голову. А профили это есть что в данном контексте?
МСУВо-вторых, если MVC4, то стоит глянуть SimpleMembershipProvider (WebMatrix.WebData). Там профильную таблицу можно атрибутивно расширять, а не как это сделано в убогом aspnet_Profile.Так, пошел глядеть...
Если можно дайте хороших ссылок по указанных темах, я еще както не совсем в теме, прошу меня извинить.
...
Рейтинг: 0 / 0
System.Web.Security
    #38003694
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oakenА профили это есть что в данном контексте?
А что, в контексте ASP.NET Membership "профиль" может подразумевать что-то еще?

oakenЕсли можно дайте хороших ссылок по указанных темах, я еще както не совсем в теме, прошу меня извинить.
Гугл тебе в руки.
...
Рейтинг: 0 / 0
System.Web.Security
    #38003715
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУoakenА профили это есть что в данном контексте?
А что, в контексте ASP.NET Membership "профиль" может подразумевать что-то еще?Это кажись понял, можно хранить сертификаты как элемент профиля в соответствующей табличке Profiles.

МСУoakenЕсли можно дайте хороших ссылок по указанных темах, я еще както не совсем в теме, прошу меня извинить.Гугл тебе в руки.Гуглю уже второй день, пока все смутно и печально... Нужна хорошая стартовая ссылка, желательно с примером реализации задачи похожей на мою...
...
Рейтинг: 0 / 0
System.Web.Security
    #38003857
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА зачем еще одна табличка? Есть же профили.
Во-вторых, если MVC4, то стоит глянуть SimpleMembershipProvider (WebMatrix.WebData). Там профильную таблицу можно атрибутивно расширять, а не как это сделано в убогом aspnet_Profile.
В "убогом" aspnet_Profile тоже можно !
...
Рейтинг: 0 / 0
System.Web.Security
    #38003864
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что все примеры, которые я нахожу, рассказывают как реализовать свой механизм членства, заточенный под хранилище отличное от MSSQL и ActiveDirectory.
Меня же полностью устраивает то как работает штатный механизм c SQL-провайдером. Даже, как выяснилось, структуру БД изменять не нужно. Но вот как реализовать возможность создания и авторизации пользователя по сертификату пока не могу догнать.

Первое что приходит в голову - наворотить собственный механизм над уже существующим который будет "подсовывать" стандартному мембершипу то что он ожидает. Но чисто интуитивно надеюсь на существование иного, более правильного пути. Как, например, переопределение или перезагрузка некоторых сужествующих методов уже существующих классов.
...
Рейтинг: 0 / 0
System.Web.Security
    #38003868
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВМСУА зачем еще одна табличка? Есть же профили.
Во-вторых, если MVC4, то стоит глянуть SimpleMembershipProvider (WebMatrix.WebData). Там профильную таблицу можно атрибутивно расширять, а не как это сделано в убогом aspnet_Profile.
В "убогом" aspnet_Profile тоже можно !
В "убогом" aspnet_Profile нельзя , посмотри внимательнее на таблицу. RTFM.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE [dbo].[aspnet_Profile](
	[UserId] [uniqueidentifier] NOT NULL,
	[PropertyNames] [ntext] NOT NULL,
	[PropertyValuesString] [ntext] NOT NULL,
	[PropertyValuesBinary] [image] NOT NULL,
	[LastUpdatedDate] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[UserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
...
Рейтинг: 0 / 0
System.Web.Security
    #38003874
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВМСУА зачем еще одна табличка? Есть же профили.
Во-вторых, если MVC4, то стоит глянуть SimpleMembershipProvider (WebMatrix.WebData). Там профильную таблицу можно атрибутивно расширять, а не как это сделано в убогом aspnet_Profile.
В "убогом" aspnet_Profile тоже можно !Вот уже и механизм хранения и извлечения сертификатов ясен)
...
Рейтинг: 0 / 0
System.Web.Security
    #38003889
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕвгенийВпропущено...

В "убогом" aspnet_Profile тоже можно !
В "убогом" aspnet_Profile нельзя , посмотри внимательнее на таблицу. RTFM.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE [dbo].[aspnet_Profile](
	[UserId] [uniqueidentifier] NOT NULL,
	[PropertyNames] [ntext] NOT NULL,
	[PropertyValuesString] [ntext] NOT NULL,
	[PropertyValuesBinary] [image] NOT NULL,
	[LastUpdatedDate] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[UserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

У меня табличка почему-то называется не aspnet_Profile а Profiles. Может мы говорим о разных вещах? Поля выделенные Вами красным есть в этой табличке. Это значит что я могу хранить любой набор атрибутов в профиле, разве нет?
...
Рейтинг: 0 / 0
System.Web.Security
    #38003916
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot oaken]МСУУ меня табличка почему-то называется не aspnet_Profile а Profiles.
А у меня как она называется?

oakenПоля выделенные Вами красным есть в этой табличке. Это значит что я могу хранить любой набор атрибутов в профиле, разве нет?
Да, атрибутов класса. А в вебматрикс - атрибутов таблицы, которая создается через Code First Entity Framework. Это очень существенная разница, если свойства профилей нужно анализировать.
...
Рейтинг: 0 / 0
System.Web.Security
    #38003936
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУпропущено...

А у меня как она называется?судя по скрипту - aspnet_Profile
МСУДа, атрибутов класса. А в вебматрикс - атрибутов таблицы, которая создается через Code First Entity Framework. Это очень существенная разница, если свойства профилей нужно анализировать.В чем она? Разве атрибуты классов анализировать нельзя? Или я неправильно понял смысл термина "анализировать"? Возможно Вы имеете ввиду анализ на уровне СУБД с помощью SQL? - тогда нет, нам скорей всего такое не понадобится.
...
Рейтинг: 0 / 0
System.Web.Security
    #38003979
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot oaken]МСУсудя по скрипту - aspnet_Profile
Тогда в чем смысл твоего вопроса?
"У меня табличка почему-то называется не aspnet_Profile а Profiles. Может мы говорим о разных вещах?" (c)

oakenВ чем она? Разве атрибуты классов анализировать нельзя? Или я неправильно понял смысл термина "анализировать"? Возможно Вы имеете ввиду анализ на уровне СУБД с помощью SQL? - тогда нет, нам скорей всего такое не понадобится.
Да, я про SQL. Если не понадобится, тогда профили подойдут. Но при MVC4 я бы лучше юзал WebMatrix.WebData, хотя бы потому, что это новый рекомендованный механизм, который ко всему прочему идет с MVC4 уже в коробке.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004174
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как там в MVC4 логин/регистрация происходят?

В WebForms я вполне нормально расширял набор параметров при регистрации, заменял username на email, всё работало, правда кода немного приходилось дописать.
Была ещё одна табдичка где хранились дополнительные параметры.

В вебформс, если бы понадобилось добавить только 1 параметр я бы писал его например в поле для комментариев(его всё равно почти не используют) и подправил бы немного котрол логина.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004196
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHTOH_LА как там в MVC4 логин/регистрация происходят?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
    {
        return RedirectToLocal(returnUrl);
    }

    // If we got this far, something failed, redisplay form
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
    return View(model);
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
            WebSecurity.Login(model.UserName, model.Password);
            return RedirectToAction("Index", "Home");
        }
        catch (MembershipCreateUserException e)
        {
            ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
...
Рейтинг: 0 / 0
System.Web.Security
    #38004384
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHTOH_LА как там в MVC4 логин/регистрация происходят?Не думаю что работа с регистрацией/логином сильно итличаются от ВебФорм.

AHTOH_LВ WebForms я вполне нормально расширял набор параметров при регистрации, заменял username на email, всё работало, правда кода немного приходилось дописать.
Была ещё одна табдичка где хранились дополнительные параметры.

В вебформс, если бы понадобилось добавить только 1 параметр я бы писал его например в поле для комментариев(его всё равно почти не используют) и подправил бы немного котрол логина.Тут проблема немножко в другом, нужно допилить механизм логина и регистрации до возможности передвать в эти функции только сертификат, ну как вариант, могу подсовывать в качестве логина и пароля какие-то суррогаты...

Проблема в том как это сделать максимально "правильно". Сейчас пробую пристегнуть SimpleMembershipProvider и попробовать реализовать это все на его базе.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004395
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oakenТут проблема немножко в другом, нужно допилить механизм логина и регистрации до возможности передвать в эти функции только сертификат, ну как вариант, могу подсовывать в качестве логина и пароля какие-то суррогаты...

Проблема в том как это сделать максимально "правильно". Сейчас пробую пристегнуть SimpleMembershipProvider и попробовать реализовать это все на его базе.

Да какая это пргоблема-то. Вызываем WebSecurity.Login, при успехе поднимает сертификат из профиля, валидируемся и выдаем соответствующий ActionResult. Можно зашить валидацию сертификата прям в свой провайдер. А можно в контроллер, как я написал. На усмотрение.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004451
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДа какая это пргоблема-то. Вызываем WebSecurity.Login, при успехе поднимает сертификат из профиля, валидируемся и выдаем соответствующий ActionResult. Можно зашить валидацию сертификата прям в свой провайдер. А можно в контроллер, как я написал. На усмотрение.Проблема в том, что в WebSecurity.Login нужно передать как минимум 2 параметра - логин и пароль. А вот их какраз при входе с ЕЦП и негде взять, приезжает сертификат на основании которого нужно решать пускать пользователя или нет.
Вот мне и хочется реализовать чтото типа WebSecurity.Login(UserSertificate) ну и аналогично с регистрацией.
Валидация приехавшего сертификата происходит до логина/регистрации в контроллере, тут все уже пашет.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004460
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oakenПроблема в том, что в WebSecurity.Login нужно передать как минимум 2 параметра - логин и пароль.
Ты читаешь каким местом? Я описал ситуацию, что нужно делать в этом случае - два варианта привел.

oakenWebSecurity.Login(UserSertificate)
Бред.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004506
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУoakenПроблема в том, что в WebSecurity.Login нужно передать как минимум 2 параметра - логин и пароль.
Ты читаешь каким местом? Я описал ситуацию, что нужно делать в этом случае - два варианта привел.

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

МСУoakenWebSecurity.Login(UserSertificate)
Бред.Почему?
...
Рейтинг: 0 / 0
System.Web.Security
    #38004533
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oakenЕще раз внимательно перечитал Ваши посты, не нашел те места где описываются действия необходимые в такой ситуации. Можете указать более конкретно?

МСУВызываем WebSecurity.Login, при успехе поднимает сертификат из профиля, валидируемся и выдаем соответствующий ActionResult. Можно зашить валидацию сертификата прям в свой провайдер. А можно в контроллер, как я написал. На усмотрение.

oakenПочему?
Потому что нужно кастомизировать провайдер: WebMatrix.WebData.ExtendedMembershipProvider , который является абстрактным классом.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004552
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВызываем WebSecurity.Login, при успехе поднимает сертификат из профиля, валидируемся и выдаем соответствующий ActionResult. Можно зашить валидацию сертификата прям в свой провайдер. А можно в контроллер, как я написал. На усмотрение.Тут мы просто не понимаем дргу друга. Я немогу вызвать WebSecurity.Login для пользователей входящих по ЕЦП, потому что они не вводят логин и пароль. Поэтому мне нужно сначала найти пользователя по его сертификату и каким-то образом залогинить его без логина и пароля имея только айди.

МСУПотому что нужно кастомизировать провайдер: WebMatrix.WebData.ExtendedMembershipProvider , который является абстрактным классом.Как по мне то это не выглядит бредом, осталось только разобраться как это сделать, по приведенной ссылке просто описаны члены этого класса, а что и как мне не совсем неясно...
...
Рейтинг: 0 / 0
System.Web.Security
    #38004571
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oakenТут мы просто не понимаем дргу друга. Я немогу вызвать WebSecurity.Login для пользователей входящих по ЕЦП, потому что они не вводят логин и пароль. Поэтому мне нужно сначала найти пользователя по его сертификату и каким-то образом залогинить его без логина и пароля имея только айди.
Теперь ты понимаешь, что нужно все исходные данные изначально излагать? А вытягивать из тебя информацию клещами - дело неблагодарное.
Да, сначала логин не покатит - значит,
1. Сначала валидация сертификата и получение имени пользователя (если имя не зашито, может сгенерить уникальный фэйк и привязать к этому сертификату)
2. При успешной валидации - принудительный логон.

Опять же, всё это можно сделать в самом провайдере либо в контроллере, как я уже сказал.
...
Рейтинг: 0 / 0
System.Web.Security
    #38004598
oaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТеперь ты понимаешь, что нужно все исходные данные изначально излагать? А вытягивать из тебя информацию клещами - дело неблагодарное.да, я это понимаю :)

МСУДа, сначала логин не покатит - значит,
1. Сначала валидация сертификата и получение имени пользователя (если имя не зашито, может сгенерить уникальный фэйк и привязать к этому сертификату)
2. При успешной валидации - принудительный логон.и это я понимаю... те Вы предлагаете все таки подсовывать какой-то суррогатный логин? а пароль? - он ведь тоже обязателен?

МСУОпять же, всё это можно сделать в самом провайдере либо в контроллере, как я уже сказал.я не понимаю КАК это сделать. Я непонимаю что значит "сделать в самом провайдере", что это значит?
Что значит "принудительный логон"? Хочется конкретных примеров.

"В контроллере" я понимаю так - реализовать всю дополнительну логику по поиску сертификата и сопоставления его юзеру в теле контроллера и в стандартный мембершип просто подсунуть данные. Но хочется именно как-то дополнить существующий механизм членства, если есть такая возможность и это будет "более правильным".
...
Рейтинг: 0 / 0
System.Web.Security
    #38004614
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oakenи это я понимаю... те Вы предлагаете все таки подсовывать какой-то суррогатный логин? а пароль? - он ведь тоже обязателен?
Так устроен System.Security.Principal.IIdentity , извини. А вот пароль не обязателен, т.к. ты сам можешь управлять свойством IsAuthenticated в провайдере.

oakenя не понимаю КАК это сделать. Я непонимаю что значит "сделать в самом провайдере", что это значит?
Что значит "принудительный логон"? Хочется конкретных примеров.
Я тебе дал ссылки, читай, смотри, ищи доп. материал.

oakenНо хочется именно как-то дополнить существующий механизм членства, если есть такая возможность и это будет "более правильным".
Дополняй.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / System.Web.Security
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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