Предотвращение 401 ответа для каждого запроса с помощью NTLM

C#: 395 символов (не включая пробел...)

for (var x = 0; x++ < 12; )
    Console.Write(
        "On the {0} day of Christmas,\nMy true love gave to me\n{1}\n\n",
        x + (x < 2 ? "st" : x < 3 ? "nd" : x < 4 ? "rd" : "th"),
        String.Join(
            "\n",
            "a partridge in a pear tree.|turtle doves and|french hens|calling birds|gold rings|geese a-laying|swans a-swimming|maids a-milking|ladies dancing|lords a-leaping|pipers piping|drummers drumming"
                .Split('|').Take(x).Select((y, i) => (i > 0 ? (i + 1) + " " : "") + y).Reverse().ToArray()
        )
    );
28
задан Dennis G 22 September 2011 в 15:39
поделиться

5 ответов

NTLM / Negotiate, в отличие от всех других схем аутентификации HTTP, являются протоколами, ориентированными на соединение.

В IIS существуют различные параметры, которые определяют, будет ли аутентификация требоваться для всех запросов на предыдущем аутентифицированное соединение (например, AuthPersistSingleRequest). Независимо от этого параметра, я считаю, что IIS автоматически потребует повторной аутентификации при выполнении запроса POST.

Если ваш сервер ухудшает повторное использование соединения (например, отправляя заголовок Connection: close в ответах), вы должны исправить это, потому что в противном случае повторная аутентификация произойдет. Вы можете легко проверить наличие таких заголовков, препятствующих повторному использованию аутентификации, с помощью Fiddler.

19
ответ дан 28 November 2019 в 03:43
поделиться

Это могло бы быть вашими настройками безопасности в IE6 для сайта. Попробуйте перейти на местную интрасеть или надежный сайт.

2
ответ дан 28 November 2019 в 03:43
поделиться

Единственный способ - использовать NTLM только на странице входа и использовать файл cookie, например здесь

4
ответ дан 28 November 2019 в 03:43
поделиться

У меня точно такая же проблема! Я использую ту же среду, что и вы. Вот только я вижу 2 401 даже в Fiddler. Я потратил пару дней на эту проблему, а потом просто отказался от нее. AuthPersistence у меня тоже не работал. Но вот ссылки, которые я нашел, может быть, они сработают в вашем случае.

http://msdn.microsoft.com/en-us/library/ms525244.aspx

http://www.microsoft .com / technet / prodtechnol / WindowsServer2003 / Library / IIS / b0b4ec5c-74f8-43e9-ac64-d8b852568341.mspx? mfr = true

http://technet.microsoft.com/en-us/library/cc786094.aspx

http://technet.microsoft.com/en-us/library/cc781339 (WS.10) .aspx

Я пытался установить флаг как на уровне виртуального каталога, так и на уровне веб-сайта, но этого не произошло Помогите. Используете ли вы IIS Metabase Explorer для редактирования этих свойств? Это более чистый способ редактирования свойств, который может помочь больше, чем прямое редактирование файла XML.

Один из способов обойти проблему - вставить заголовок Cache-Control в ответ HTTP для ресурсов, которые не будут часто меняться на любую страницу. В моем случае я кэшировал файлы css (максимально используйте внешний css для оптимизации), js и img файлы. Так как у меня есть около 60 файлов этих типов, которые загружаются на нашу домашнюю страницу, мы смогли сразу устранить около 120 401 ошибку!

Убедитесь, что вы используете заголовок Cache-Control, а не кэширование на основе if-modified или e-tag, где 401 и 304 все равно будут генерироваться, даже когда файлы кэшируются.

Один из способов обойти проблему - вставить заголовок Cache-Control в ответ HTTP для ресурсов, которые не будут часто меняться ни на одной странице. В моем случае я кэшировал файлы css (максимально используйте внешний css для оптимизации), js и img файлы. Поскольку у меня есть около 60 файлов этих типов, которые загружаются на нашу домашнюю страницу, мы смогли сразу устранить около 120 401 ошибку!

Убедитесь, что вы используете заголовок Cache-Control, а не кэширование на основе if-modified или e-tag, где 401 и 304 все равно будут генерироваться, даже когда файлы кэшируются.

Один из способов обойти проблему - вставить заголовок Cache-Control в ответ HTTP для ресурсов, которые не будут часто меняться ни на одной странице. В моем случае я кешировал файлы css (максимально используйте внешний css для оптимизации), js и img файлы. Так как у меня есть около 60 файлов этих типов, которые загружаются на нашу домашнюю страницу, мы смогли сразу устранить около 120 401 ошибку!

Убедитесь, что вы используете заголовок Cache-Control, а не кэширование на основе if-modified или e-tag, где 401 и 304 все равно будут генерироваться, даже когда файлы кэшируются.

Так как у меня есть около 60 файлов этих типов, которые загружаются на нашу домашнюю страницу, мы смогли сразу устранить около 120 401 ошибку!

Убедитесь, что вы используете заголовок Cache-Control, а не кэширование на основе if-modified или e-tag, где 401 и 304 все равно будут генерироваться, даже когда файлы кэшируются.

Поскольку у меня есть около 60 файлов этих типов, которые загружаются на нашу домашнюю страницу, мы смогли сразу устранить около 120 401 ошибку!

Убедитесь, что вы используете заголовок Cache-Control, а не кэширование на основе if-modified или e-tag, где 401 и 304 все равно будут генерироваться, даже когда файлы кэшируются.

1
ответ дан 28 November 2019 в 03:43
поделиться

По смежной теме; если вы используете IIS7.0 и аутентификацию kerberos, похоже, что AuthPersistNonNTLM=true может быть использован, чтобы избежать 401 round-trips для каждого запроса.

http://msdn.microsoft.com/en-us/library/aa347548(VS.90).aspx

http://blogs.technet.com/b/configurationmgr/archive/2010/06/03/solution-you-may-experience-slow-performance-when-using-bits-and-kerberos-authentication-on-configmgr-2007-distribution-points.aspx

3
ответ дан 28 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

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