| Предыдущий | Следующий |
| NTE_VALIDATION_FAILED | NTE_ENCRYPTION_FAILURE |
NTE_INCORRECT_PASSWORD
В NTE_INCORRECT_PASSWORD особенно важна область действия: отклонения учётных данных поставщиком. Поставщик проверил указанный пароль, PIN или credential защищённого ключа и определил, что он не разблокирует запрошенный ключ или состояние токена. Сохраняйте шестнадцатеричное значение 0x80090033 вместе с API, который его вернул, поскольку высокоуровневое ПО может преобразовать его в сообщение, теряющее это различие.
Начните с API, вернувшего результат
При этом результате защищённый поставщик может различать неправильный секрет, просроченный секрет, который необходимо сменить, и состояние защиты, где новые попытки игнорируются. Сохраняйте время попыток и состояние поставщика, иначе приложение может свести все случаи к общей ошибке PIN или пароля.
Матрица диагностических данных
- 1. Идентификаторы поставщика и устройства, тип учётных данных, число попыток, состояние блокировки или ограничения частоты и временные отметки
Убедитесь, какие именно учётные данные ожидает поставщик: пароль учётной записи, пароль PFX, PIN токена и пароль защиты ключа не взаимозаменяемы. - 2. Был ли секрет отклонён, принят, но просрочен, или вообще не проверялся
Не записывайте сам секрет, но сохраняйте его источник, имя ключа, поставщика и число попыток. - 3. Поддерживаемая процедура смены пароля или разблокировки для конкретного поставщика
До повтора проверьте политику блокировки и запрашивайте секрет один раз через одобренный поставщиком интерфейс.
Для отклонения учётных данных эти сведения намеренно не содержат секретов: идентификаторов, длин, имён поставщиков, выбранных политик и переходов состояния обычно достаточно без записи закрытых ключей, паролей, PIN или plaintext.
Что включать в пакет для эскалации
Сопоставьте последнюю успешную операцию с установкой или обновлением поставщика, созданием или обновлением ключа, изменениями профиля или сеанса, подключением и отключением устройства, обновлением политик и первым неудачным вызовом. Для этого результата порядок важен: ошибка сразу после миграции ключа указывает на другую границу, чем сбой после смены учётной записи службы.
- Для этого результата подготовьте минимальный пример с именем API, поставщика, ключа или контейнера, флагами и размерами нечувствительных входных данных.
- Для этого пути сохраните события поставщика, устройства, профиля и ОС за период от последнего успеха до первого сбоя.
- Для этого пути сохраните заведомо исправный контрольный результат с той же идентичностью, архитектурой и выбором поставщика.
Минимальная последовательность теста
При этом результате остановите автоматические повторы. После периода ожидания или административного восстановления, определённого поставщиком, выполните одну помеченную попытку с заведомо действительными тестовыми учётными данными на непроизводственном объекте. Если причина в истечении срока, используйте поддерживаемую процедуру смены секрета вместо повторной передачи старого значения.
- Сохраните исходный ввод, идентичность, выбор поставщика или протокола и первое возвращённое значение для этого результата.
- Используйте один заведомо исправный контроль, меняющий только подозреваемую часть пути отклонения учётных данных.
- Где это безопасно, выполните обратное сравнение с заведомо исправным вводом на том же сбойном слое.
- Фиксируйте место первого расхождения в пути проверки учётных данных, а не оценивайте только итоговое сообщение приложения.
Границы этого HRESULT
NTE_AUTHENTICATION_IGNORED означает, что защитный механизм не допустил нормальную проверку; этот код означает фактический провал проверки учётных данных. Не делайте вывод о неверных учётных данных, когда поставщик сообщил об их игнорировании, и не сбрасывайте токен до фиксации данных о блокировке.
Для отклонения учётных данных поставщиком также сохраняйте исходное числовое значение: соседние константы могут требовать существенно разного восстановления, даже если приложение показывает их все как ошибку аутентификации, сертификата или безопасности.
Критерии закрытия проблемы
Для этого результата поставщик должен снова нормально проверять учётные данные, применять свою политику повторов и выполнять защищённую операцию после необходимой смены или процедуры восстановления. Сохраните регрессионный тест с нечувствительными идентификаторами и ожидаемыми результатами, включая один отрицательный контроль, который должен по-прежнему завершаться ошибкой.
Технические ссылки
Эти источники определяют HRESULT и соответствующий интерфейс, протокол или формат данных проверки учётных данных поставщиком.
- Открытые спецификации Microsoft: значения HRESULT.
- Microsoft: CNG Key Storage Providers.
- Microsoft: функции хранилища ключей CNG.
Нужно найти другой код? Найти другой код состояния или ошибки.