Введение

Простой и защищенный механизм согласования GSSAPI (SPNEGO), часто произносится как "spenay go", является "псевдомеханизмом" GSSAPI, используемым клиент-серверным программным обеспечением для согласования выбора технологии безопасности. SPNEGO используется, когда клиентское приложение хочет аутентифицироваться на удаленном сервере, но ни одна из сторон не уверена, какие протоколы аутентификации поддерживает другая сторона. Этот псевдомеханизм использует протокол для определения доступных общих механизмов GSSAPI, выбирает один из них и затем передает все последующие операции безопасности для обработки выбранному механизму. Это может помочь организациям поэтапно внедрять новые механизмы безопасности. Наиболее известное применение SPNEGO – расширение аутентификации "HTTP Negotiate" от Microsoft. Оно впервые было реализовано в Internet Explorer 5.01 и IIS 5.0 и обеспечивало возможность единого входа, впоследствии продвигаемую как интегрированная аутентификация Windows. Среди согласовываемых подмеханизмов были NTLM и Kerberos, которые использовались в Active Directory. Позже расширение HTTP Negotiate было реализовано с аналогичной поддержкой в:
Mozilla 1.7 beta
Mozilla Firefox 0.9
Konqueror 3.3.1
Google Chrome 6.0.472
Google Chrome для Android m46 с Hypergate Authenticator.
Microsoft Edge для Android v124 с Hypergate Authenticator.

История

19 февраля 1996 г. Эрик Байз и Денис Пинкас опубликовали в Интернете проект простого механизма согласования API GSS (draft ietf cat snego 01. txt). 17 октября 1996 г. Механизму присвоен идентификатор объекта 1.3.6.1.5.5.2 и сокращенное обозначение snego. 25 марта 1997 г. Добавлена оптимистическая передача начального токена одного из механизмов, что позволяет избежать дополнительного обмена данными. 22 апреля 1997 г. Введено понятие "предпочтительного" механизма. Название проекта стандарта изменено с "Simple" на "Simple and Protected" (spnego). 16 мая 1997 г. Добавлены флаги контекста (делегирование, взаимная аутентификация и т.д.). Предусмотрены средства защиты от атак на новый "предпочтительный" механизм. 22 июля 1997 г. Добавлены дополнительные флаги контекста (целостность и конфиденциальность). 18 ноября 1998 г. Правила выбора общего механизма были смягчены. Предпочтения механизма интегрированы в список механизмов. 4 марта 1998 г. Внесена оптимизация для нечетного числа обменов. Сам список механизмов стал необязательным. Декабрь 1998 г. (окончательная версия) – Для устранения неоднозначности в вычислении MIC выбрано кодирование DER. Проект представлен для стандартизации в качестве RFC 2478. Октябрь 2005 г. – Рассмотрены вопросы совместимости с реализациями Microsoft. Некоторые ограничения были улучшены и уточнены, а дефекты устранены. Опубликован как RFC 4178, однако он больше не совместим со строгими реализациями устаревшего RFC 2478.