Есть ли какой-либо способ настроить исключение Active Directory / сообщение об ошибке?

#exception-handling #active-directory

#исключение #active-directory

Вопрос:

Я использую Active Directory в качестве хранилища данных для пользователей моего веб-сайта. У меня Active Directory выдает следующее исключение на случай, если пароль не соответствует никакому ограничению политики паролей..

—> Указанный пароль неверен. Пароли должны соответствовать требованиям к надежности пароля, настроенным для поставщика по умолчанию.

Могу ли я каким-либо образом настроить эти сообщения / уведомления об ошибках, чтобы они были более конкретными??

Чего я хочу, так это того, что — если ‘password history’ является ограничением, которое нарушается, тогда в сообщении об ошибке должно быть указано это (например. Новый пароль должен отличаться от последних 10 использованных паролей ..)

Приветствуется любая помощь.

Комментарии:

1. Большинство из этих сообщений, связанных с безопасностью, являются «неспецифическими» по определенной причине — вы не хотите давать возможному злоумышленнику никаких намеков на то, что не так. Я бы оставил их «как есть»…

2. Хм.. Имеет смысл. Но нет ли способа отредактировать их??

Ответ №1:

вы можете перехватить это и throw создать собственное сообщение

 try {
   // your error will probably appear here
    if (MembershipService.ValidateUser(usr, pwd))
    {
        ...
    }
}
catch(Exception ex)
{    
    // Let's see if we have Inner Exceptions to deal
    if(ex.InnerException != null)
        while(ex.InnerException != null)
            ex = ex.InnerException;

    // Now, let's check our exception
    if(ex.Message.StartsWith("The password supplied is invalid. Passwords must conform to the password strength requirements configured for the default provider."))
    {
        throw new Exception("My custom message goes here");
    }

    // Let's throw the original one 
    throw ex;
}
  

Это то, чего вы пытаетесь достичь?

Комментарии:

1. @balexandre — Спасибо за ответ. Но моя основная проблема в том, что я получаю одно и то же исключение и сообщение об ошибке для ограничения 3 паролей (история паролей, требования к сложности, минимальная длина). Итак, я не могу сказать им, что именно было не так?? Есть ли какой-либо способ, которым я могу это сделать??

2. Есть ли у кого-нибудь из ваших Exception ов внутренние исключения? — Код обновлен

3. Да, все они имеют одинаковое внутреннее исключение — {«Произошло нарушение ограничения. (Исключение из HRESULT: 0x8007202F)»}

4. Если то, что вы получаете, точно такое же, то вы ничего не можете сделать в конце кода C #, может быть, есть политика, позволяющая описать это более подробно? Спросите на serverfault.com Но мне придется согласиться с marc_s , эти ошибки могут быть одинаковыми в propose.

5. Ага .. Наконец-то проделал то же самое, просто настроил мое сообщение на более конкретное..

Ответ №2:

Что ж, вы должны увидеть точный тип исключения, которое генерируется, и настроить определенный catch для этого исключения.

Если вы видите эту ссылку, http://msdn.microsoft.com/en-us/library/0yd65esw.aspx , вы увидите, что вы можете перехватить несколько конкретных исключений.

Затем вы могли бы вернуть пользователю любой текст сообщения, который вы хотите.

Комментарии:

1. Я получаю одно и то же исключение для всех 3 нарушенных ограничений.. Что следует делать в этом случае??

2. Если вы знаете правила сложности, возможно, вам следует протестировать / подтвердить свои пароли заранее.

3. Да, я знаю правила сложности, но мой руководитель группы хочет «готовую реализацию» через поставщика..

4. Возможно, вы могли бы запросить правила в Active Directory и применить их программно, чтобы, даже если они изменятся, ваше приложение оставалось актуальным

5. Не могли бы вы, пожалуйста, дать мне несколько ссылок о том, как это реализовать??