Estoy de programación de una aplicación cliente .Neta que se comunica con el servidor a través de HTTP.

Yo juego para la solicitud de búfer opciones en caso de NTLM y Kerberos autorización.

Cómo averiguar si se utiliza NTLM o Kerberos? Es posible de alguna manera decodificar » WWW-Authenticate: Negociar el encabezado?

OriginalEl autor IT Hit WebDAV | 2011-04-08

4 Comentarios

  1. 31

    Encontrará respuesta aquí.

    Respuesta corta es:

    1.Capture some successfully authorized request using Fiddler tool.
    2.Choose "Inspectors" -> "Headers" tab.
    3.Pay attention at "Cookies /Login" section, "Authorization" header.

    Si el token de Autorización comienza con «YII», a continuación, se utiliza Kerberos, pero si comienza con «TlR» entonces no se utiliza Kerberos.

    Por ejemplo Kerberos:

    Authorization: Negotiate YIIVDAYGKwYBE...

    No Kerberos:

    Authorization: Negotiate TlRMTVNTUA...
    Excelente! Muy simple, y funciona .Net/C#. Gracias Taras!
    También los Inspectores/Auth ficha va a decir algo así como ‘el Encabezado de Autorización (Negociar) parece contener un ticket de Kerberos’
    Lo que si se comienza ingenio «oY»? stackoverflow.com/q/24454777/498298
    Lo que si comienza con un «oS»?
    El violinista se erige como un proxy y puede causar kerberos a fallar en algunas situaciones, lo que llevaría a un NTLM de retroceso para la mayoría de Negociar situaciones. Microsoft me ha avisado de esto en un ticket de soporte en el pasado, cuando PENSÉ que había comprobado que kerberos no estaba trabajando para una aplicación en particular. Es mejor usar menos intrusiva métodos de registro para inspeccionar el encabezado de autorización, por ejemplo, «seguimiento de netsh»: blogs.msdn.com/b/canberrapfe/archive/2012/03/31/…

    OriginalEl autor Taras Kozubski

  2. 5

    Análisis de Negociar un encabezado es una especie de un tedioso ejercicio como está construido utilizando la ASN.1 DER.

    Que dijo, usted no necesariamente necesita para descifrar esto, sin embargo, para hacer una buena suposición acerca de la carga. Mientras que hay un mecanismo en GSSAPI para NTLM (más sobre esto más adelante), en mi experiencia, los clientes no usar, simplemente envíe NTLM encabezados. En mi (es cierto que estrictamente controladas) el medio ambiente, si veo Authorization: NTLM ... entonces esto está garantizado para ser NTLM. Si veo Authorization: Negotiate ... entonces esto está garantizado para ser Kerberos.

    Estrictamente hablando, usted debe buscar en el mecanismo de lista en el encabezado para determinar si el mecanismo de autenticación NTLM o Kerberos. Yo recomendaría utilizar un off-the-shelf ASN.1 decodificador, o en busca de Microsoft la decodificación de ejemplo. Usted va a querer buscar la SPNEGO OID (1.3.6.1.5.5.2), a continuación, busque el mecanismo de tipo de secuencia dentro de eso. El primer mecanismo en la secuencia corresponde a la respuesta de token de carga útil, así que usted puede mirar en ese OID para determinar el mecanismo. Algunos conocidos Oid para 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)

    A mi entender, el único OID para NTLM es (referencia de este blog):

    1.3.6.1.4.1.311.2.2.10 (NLMP NTLM)
    Es absolutamente legal y posible utilizar NTLM dentro de Negociar, y en mi experiencia, es bastante común. Si usted simplemente base64 decodificar el encabezado, debe ser obvio que el SSP está en uso. E. g. echa un vistazo dentro de Fiddler’s AUTH ficha.
    es por eso que me sugirió analizar el mecanismo de la lista.
    y si hay alguna forma más trivial para determinar el mecanismo que mediante el análisis correctamente, a continuación, que podrían ser útiles conocimientos. Es que no lo violinista que está haciendo?
    También hay un OID para NegoEx: 1.3.6.1.4.1.311.2.2.30. Esto se utiliza para ampliar la «autorización: negociar» encabezados para apoyar a los nuevos protocolos.
    false=»Si veo a Autorización: a Negociar … entonces esto está garantizado para ser Kerberos»

    OriginalEl autor Edward Thomson

  3. 0

    Si el servidor se anuncia para el usuario Negociar usted es libre de utilizar Kerberos, NTLM oder algo es apoyado por SPNEGO. Sin embargo, no hay ninguna garantía de que el servidor es compatible con todos los envueltos auth enviados por el cliente.

    Yo soy de programación .Net y sólo puedo especificar Negociar en un lado del cliente. Así que, finalmente, no sé si NTLM o Kerberos fue el elegido. Alguna idea de cómo detectar el cual fue seleccionado?

    OriginalEl autor Michael-O

  4. 0

    Sí; sólo Base64 decodificar y verás «NTLM» o «HTTP».

    C#

    v = BitConverter.ToString(Convert.FromBase64String(v.Replace("Negotiate: ","")));
    if (v.indexOf("NTLM") > -1) {
        //...
    }

    OriginalEl autor user1133275

Dejar respuesta

Please enter your comment!
Please enter your name here