Введение
Простой и защищенный механизм согласования 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.
Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO), often pronounced "spenay go", is a GSSAPI "pseudo mechanism" used by client server software to negotiate the choice of security technology. SPNEGO is used when a client application wants to authenticate to a remote server, but neither end is sure what authentication protocols the other supports. The pseudo mechanism uses a protocol to determine what common GSSAPI mechanisms are available, selects one and then dispatches all further security operations to it. This can help organizations deploy new security mechanisms in a phased manner. SPNEGO's most visible use is in Microsoft's "HTTP Negotiate" authentication extension. It was first implemented in Internet Explorer 5.01 and IIS 5.0 and provided single sign on capability later marketed as Integrated Windows Authentication. The negotiable sub mechanisms included NTLM and Kerberos, both used in Active Directory. The HTTP Negotiate extension was later implemented with similar support in:
Mozilla 1.7 beta
Mozilla Firefox 0.9
Konqueror 3.3.1
Google Chrome 6.0.472
Google Chrome for Android m46 with Hypergate Authenticator. Microsoft Edge for Android v124 with 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.