Анализ заголовка Negotiate - утомительное занятие, поскольку оно построено с использованием ASN.1 DER.
Тем не менее, вам не обязательно нужно декодировать это, чтобы сделать хорошее предположение о полезной нагрузке. Хотя в GSSAPI для NTLM есть механизм (подробнее об этом ниже), по моему опыту клиенты на самом деле его не используют, они просто отправляют заголовки NTLM. В моей (предположительно строго контролируемой) среде, если я вижу Authorization: NTLM ...
, то это гарантированно NTLM. Если я вижу Authorization: Negotiate ...
, то это гарантированно Kerberos.
Строго говоря, вы должны посмотреть на список механизмов в заголовке, чтобы определить, был ли этот механизм NTLM или Kerberos. Я бы порекомендовал либо использовать стандартный декодер ASN.1, либо посмотреть на Microsoft пример расшифровки. Вам нужно будет найти SPNEGO OID (1.3.6.1.5.5.2
), а затем найти в нем последовательность типов механизма. Первый механизм в последовательности соответствует полезной нагрузке токена ответа, поэтому вы можете посмотреть этот OID, чтобы определить механизм. Некоторые известные OID для Kerberos:
1.2.840.113554.1.2.2 (Kerberos 5)
1.2.840.48018.1.2.2 (Microsoft Kerberos 5)
1.3.5.1.5.2 (Kerberos 5 OID 2)
Насколько мне известно, единственный OID для NTLM - это (ссылка на этот блог):
1.3.6.1.4.1.311.2.2.10 (NLMP NTLM)
person
Edward Thomson
schedule
14.07.2011