DefaultNetworkCredentials имеет нулевые значения.Необходимо подсказать пользователю… как?

StackOverflow https://stackoverflow.com/questions/998167

Вопрос

При определенных обстоятельствах мое настольное приложение, использующее веб-службы SharePoint, получает значение DefaultNetworkCredentials, имеющее нулевые значения, и поэтому вызов завершается неудачно.Затем мне нужно получить учетные данные пользователей, но я не нашел прямого способа сделать это.

Я рассматриваю возможность реализации решения, изложенного в http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html

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

Спасибо,

РЕДАКТИРОВАТЬ:Похоже, я не найду именно того, что ищу...Когда это произойдет, мне придется самому подсказать пользователю.

Однако, если я правильно интерпретирую некоторые из этих ответов, то, что DefaultNetworkCredentials изначально имеет нулевое значение, может быть ошибкой.Так ли это?Есть ли способ заставить DefaultNetworkCredentials заполниться, или это действительно простой кеш, который просто запоминает последний домен/идентификатор пользователя/пароль, использованный для целевого URI (в тот день?это приложение/сеанс?).

Это было полезно?

Решение

Я не думаю, что вы сможете избежать контакта с ними в первый раз.Но вы подключаетесь к диспетчеру учетных данных, чтобы с этого момента они были кэшированы. Вот статья о том, как это сделать.Он требует большого количества p/invoke, но может дать вашим пользователям более единообразный опыт.

Другие советы

Работайте над основной проблемой — нулевыми учетными данными, а не выпрашивайте у пользователя информацию, которую он уже ввел.

Если только вы не хотите, чтобы они могли входить в SharePoint иначе, чем в свою текущую учетную запись (возможно, полезная функция).

В .NET есть код для работы с учетными данными, так зачем же догадываться об этом, обращаясь к внешним dll и добавляя еще одну зависимость в свое приложение?

Я недостаточно знаю о рисках безопасности кода, которые могут возникнуть в вашей среде, но я бы подумал, что хранение объекта учетных данных только в памяти клиента будет «достаточно безопасным» для большинства ситуаций.

Я не знаю ничего, что обрабатывало бы пароль для вас, но SecureString может оказаться полезным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top