Блокировка пользователя в.Net Custom Membership Provider ASP

Итак, я опубликовал то же самое на форуме Elastic beats и получил решение. Вы можете найти то же самое здесь

Согласно их предложению, отключение службы Audit позволило бы захватывать события аудита в Audibeat. Я попробовал то же самое, и это сработало для меня. Но я не уверен в последствиях отключения аудита. Так что я мог бы переключиться на решение на основе Filebeat.

6
задан GEOCHET 9 March 2009 в 21:47
поделиться

4 ответа

Scott Mitchell записал превосходный ряд учебных руководств на сайте ASP.NET. Эта ссылка включает информацию о создании пользовательского поставщика и обсуждает логику блокировки:

http://www.asp.net/LEARN/security/tutorial-06-cs.aspx

Нет также никакого встроенного метода для разблокирования учетных записей (т.е. необходимо сделать это через инструменты базы данных при использовании чего-то подобного SqlMembershipProvider). Scott также написал статью о создании UI для управления этим, которое можно найти здесь:

http://www.asp.net/LEARN/security/tutorial-14-vb.aspx

Я на самом деле рекомендую читать целый ряд. Scott превосходный коммуникатор.

Я надеюсь, что это помогает.

7
ответ дан 8 December 2019 в 18:43
поделиться

В Вашем пользовательском поставщике членства необходимо реализовать функцию ValidateUser. Там Вы не только проверяете, допустимы ли имя пользователя и пароль, но Вы также получаете количество попыток неверного пароля и т.д. от Вашего хранилища данных. Если имя пользователя/пароль допустимо, сбросьте количество попытки пароля, otherelse увеличивают количество попытки. SqlMembershipProvider также хранит дату и время LastAttempt, таким образом, Вы не можете "в лоб" Вы путь в том, потому что Нельзя попытаться в течение определенного периода времени.

0
ответ дан 8 December 2019 в 18:43
поделиться

Это - что-то, что необходимо было бы записать сами.

Схема базы данных по умолчанию имеет следующие столбцы в aspnet_Membership таблице:

IsLockedOut
FailedPasswordAttemptCount
FailedPasswordAttemptWindowStart

Количество попытки будет увеличено на каждой неудачной попытке в окне попытки, и время первой неудачной попытки хранится в начальном столбце окна, после того как FailedPasswordAttemptCount равняется maxInvalidPasswordAttempts из конфигурации, IsLockedOut установлен.

Как Michiel заявляет, Ваш метод ValidateUser должен будет затем проверить эти значения на основе настроек в конфигурации поставщика - по умолчанию это:

maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"

После того как у пользователя были максимальные попытки входа в систему, необходимо будет удостовериться установку MembershipUser. IsLockedOut установлен от Вашего поставщика - можно затем проверить, что значение и ведет себя соответственно - при использовании Управления входом в систему по умолчанию это значение будет, вероятно, уже проверено на Вас.

3
ответ дан 8 December 2019 в 18:43
поделиться

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

if (0 < Membership.MaxInvalidPasswordAttempts && Membership.MaxInvalidPasswordAttempts < 100)
       {
                for(int i = 0; i <= Membership.MaxInvalidPasswordAttempts; i++)
                {
                    Membership.ValidateUser(userName, "jfdlsjflksjlkfjsdlkfjsdl");
                }
        }
3
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: